我是编程和Java的新手,这是我的第一个null,我有点困惑,因为我不知道发生了什么是编码中的那种错误?还是别的什么?请在这种情况下需要您的解释,并在整体上以简单的方式解决null
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
System.out.println("Enter grades size :");
int Size = input.nextInt();
String[] y = new String[Size];
int[] x = new int[Size];
int Max = 0;
int Min = x[0];
String Max_studen = y[0];
String Min_studen = y[0];
for (int i = 0 ; i < Size ; i++) {
System.out.println("Enter student name #" + (i));
y[i] = input.next();
System.out.println("Enter student grade : #" + (i));
x[i] = input.nextInt();
if (x[i] > Max) {
Max = x[i];
Max_studen = y[i];
} else if (x[i] < Min) {
Min = x[i];
Min_studen = y[i];
}
}
System.out.println("Max Student is: " + Max_studen);
System.out.println("Max grade is: ");
System.out.println(Max);
System.out.println("Min Student is: " + Min_studen);
System.out.println("Min grade is : ");
System.out.println(Min);
}
Run Code Online (Sandbox Code Playgroud)
输出是:
Enter grades size :
2
Enter student name #0
Sam
Enter student grade : #0
85
Enter student name #1
Samy
Enter student grade : #1
95
Max Student is: Samy
Max grade is:
95
Min Student is: null
Min grade is :
0
Run Code Online (Sandbox Code Playgroud)
对于初学者来说,这是一个棘手的问题.让我带你走过这个.
第一个重要的是那些:
String[] y = new String[Size];
int[] x = new int[Size];
Run Code Online (Sandbox Code Playgroud)
这两个阵列之间存在重大差异.x是一个基元数组,y而是一个对象数组.基元在Java中具有明确定义的默认值(通常0),因此x使用包含a的所有单元初始化数组0.对于对象,没有默认值.由于您可以编写自己的类,因此Java不知道什么是良好的默认值,例如a Car.因此,对象null的默认值是.目前,想象null一下" 这个细胞是空的 " 1.这意味着每个单元格都y包含在内null.
现在到下一个重要的路线:
int Min = x[0];
[...]
String Min_studen = y[0];
Run Code Online (Sandbox Code Playgroud)
如前所述,x已全部初始化0.从此结束,Min现在0.这里有一个问题,因为在典型情况下,您永远不会输入成绩< 0,因此Min永远不会被覆盖.在genereal中,如果您正在寻找一些最小值/最大值,您应该使用Integer.MIN_VALUE(最大值)或Integer.MAX_VALUE(最小值)初始化它们.还有类似的常数long,float和double.这些常数通常可以避免给定问题.既然Min永远不会被覆盖,Min_studen也永远不会被覆盖.初始值y是nulls,也就是Min_studen值.
您对代码的一些评论:
[]阵列的通常写入以下的类型,没有空白:String[]代替String [].{,应该总是有一个换行符.studentGrades而studentNames不是x和y.有许多网站解释编码惯例和风格指南,其中一些在这里和这里 2.你现在可能不想看它们,但是如果你掌握了Java的基础知识并阅读它们,请记住它们.
1实际意义与null我给出的描述非常接近,但推理有点复杂,需要知道堆和堆栈存储以及存储在哪里.
2没有"风格"这样的东西.您当然可以自由定义自己的.样式指南是一种使代码更易于阅读的方法.每当您更改样式指南或部分样式指南时,请记住这一点.
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |