我正在学习Java并遇到问题,我进行了最大/最小练习并尝试了下面的代码,对于正数,它可以正常工作,但是当我尝试负数时,事情就变得混乱了。
如果输入5,则得到min = 5,max = 5,如果输入10,则得到min = 5 max = 10,到目前为止,效果很好,但是如果键入-5,则得到min = -5和max = -5,事情仍然变得很奇怪,如果您输入7,则得到min = -5和max = 7。
有人可以解释为什么会这样吗?
public static void main(String[] args) {
int ctrl;
int min = 0;
int max = 0;
boolean hasNextInt;
Scanner scanner = new Scanner(System.in);
int counter = 0;
while (true) {
System.out.println("Enter your number:");
hasNextInt = scanner.hasNextInt();
if(hasNextInt) {
ctrl = scanner.nextInt();
if(counter == 0) {
min = ctrl;
max = ctrl;
counter ++;
}
if(min>ctrl)
min = ctrl;
if(max<ctrl);
max = ctrl;
System.out.println("Minimum Number entered: " + min);
System.out.println("Maximum Number entered: " + max);
System.out.println("");
scanner.nextLine();
}else {
System.out.println("Invalid Number. Program stop working.");
break;
}
}
scanner.close();
}
答案 0 :(得分:4)
if(max<ctrl);
max = ctrl;
这种缩进极具误导性。
使用执行代码格式化的IDE。你真正写的是
if(max<ctrl){}
max = ctrl;
还应避免在没有if
的情况下进行else
/ for
/ {}
等。