gpt4 book ai didi

java - 为什么这会返回 null?

转载 作者:行者123 更新时间:2023-12-01 17:13:20 30 4
gpt4 key购买 nike

赋值是读取ArrayList的最大值并返回,如果为0或为空则返回并打印null。但是当我运行它时,负数的输出为 null,而它应该只为 0 返回 null。

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<Integer>();

int addNum = -1;

//User inputs numbers for the list until they input 0
while (addNum != 0) {

addNum = input.nextInt();
list.add(addNum);

}

//Sends it to the method to check for the biggest number
Integer i = max(list);

//It returns null if it's negative for some reason
if (i == null) {
System.out.println((String) null);
} else {
System.out.println("The greatest number is " + i);
}
}

public static Integer max(ArrayList<Integer> list) {
Integer i = Collections.max(list);

//Even though the if statement says only if it is equal to 0
if (i == 0) {
return (null);
} else {
return i;
}
}

示例运行

-12
-151
-1221
-2121
-61
-42
0
null

最佳答案

您的问题在这里:

//User inputs numbers for the list until they input 0
while (addNum != 0) {

addNum = input.nextInt();
list.add(addNum);

}

当你得到 0 时,你也将它添加到列表中。从词法上来说,0 大于所有负整数,因此您的 max() 函数始终返回 null。

你可以像这样修复它(这是一个黑客工作,有更好的方法,你可能想考虑你是如何做事的,目前它是相当多余的):

//User inputs numbers for the list until they input 0
while (addNum != 0) {

addNum = input.nextInt();
if(addNum == 0)
break;
list.add(addNum);

}

关于java - 为什么这会返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23022383/

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