gpt4 book ai didi

java - 空问题需要解释

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:58:29 24 4
gpt4 key购买 nike

我是编程和 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);
}

输出是:

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

最佳答案

对于初学者来说,这是一个棘手的问题。让我们一起浏览这段代码。

最重要的几行是:

String[] y = new String[Size];
int[] x = new int[Size];

这两个数组之间有一个主要区别。 xprimitives 的数组, 而 y是一个对象数组。基元在 Java 中有一个明确定义的默认值(通常是 0 ),所以数组 x使用包含 0 的所有单元格进行初始化.对于对象,没有默认值这样的东西。由于您可以编写自己的类,因此 Java 不知道什么是好的默认值,例如 Car。是。因此 default value for objects is null .现在,让我们定义 null作为表示“此单元格为空1 的值。所以 y 的每个单元格包含 null作为它的值(value)。

现在到下一个重要的行:

int Min = x[0];
[...]
String Min_studen = y[0];

如前所述,x用所有 0 初始化.由此得出结论,Min现在是0 .我们这里有一个问题,因为在典型情况下我们永远不会输入成绩 < 0因此 Min永远不会被覆盖。一般来说,如果我们正在寻找一些最大值或最小值,我们应该用 Integer.MIN_VALUE 初始化它们。 (最大值)或 Integer.MAX_VALUE (对于最小值)分别。 long 有类似的常量, floatdouble .这些常量通常避免像给定的问题。自 Min永远不会被覆盖,Min_studen也永远不会被覆盖。 y 的初始值是null s,原样Min_studen的值(value)。


对您的代码的一些评论:

  • 变量名应该写在camelCase中.
  • []数组的 of 通常写在类型后面,没有空格:String[]而不是 String [] .
  • 经过 { , 应该总是有一个换行符。
  • 变量名应该是有意义的和描述性的。可以使用 studentGradesstudentNames而不是 xy .

有很多网站解释编码约定和风格指南,其中一些是 herehere 2。您现在可能不想看它们,但如果您掌握了 Java 的基础知识并阅读它们,请记住它们以供日后使用。


1null的实际含义与我给出的描述非常接近,但推理有点复杂,需要读者了解堆和堆栈内存以及存储内容的位置。

2没有“styleguid”这样的东西。您当然可以自由定义自己的。风格指南是一种使代码更易于阅读的方法。每当您更改样式指南或其中的一部分时,请牢记这一点。

关于java - 空问题需要解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31552993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com