所以我的作业问题是提示用户一系列整数并找到那些整数的最大值和最小值。使用循环和-99来打破循环。下面是我的代码,但我的问题是,有更短的方法吗?随时发表评论,感谢您阅读本文。
Scanner input=new Scanner(System.in);
int num1,num2,max,min;
System.out.print("enter a number: ");
num1=input.nextInt();
System.out.print("enter another number: ");
num2=input.nextInt();
max=Math.max(num1,num2);
min=Math.min(num1,num2);
while (num2!=-99){
System.out.print("enter a number or -99 to stop: ");
num2=input.nextInt();
if(num2!=-99){
max=Math.max(max,num2);
min=Math.min(min,num2);
}
}
System.out.println("largest is: "+max);
System.out.println("Smallest is: "+min);
答案 0 :(得分:2)
你检查num2 != -99
两次的情况,记住编程的第一条规则,不要重复自己
在请求下一个输入之前,您可以通过检查min和max来保存一些行。这样您就不需要检查while循环中是否num2 != -99
答案 1 :(得分:0)
您的代码有一个小错误,可以略微优化。你可能想要考虑的事情:
-99
作为第二个号码时会发生什么(以及会发生什么?)min
和max
。(num2!=-99)
?专业问题:
enter
会怎样?吹毛求疵:
使用+
来连接字符串和数字是一个坏主意,因为很难记住它的工作原理以及它不在哪里。
更好地了解String.valueOf(int i)和String.format(String format, Object... args)
以最佳可读方式查找Google's Java Coding Style格式化代码。在许多编辑器中,您可以自动应用该样式。它描述了在何处使用空格或缩进内容等内容。
答案 2 :(得分:0)
好的,所以在做完这个之后。我终于做到了。它确实有一个小bug,但我真的不想修复它,所以如果想要编辑它然后成为我的客人。
C:\Program Files\Java\jre1.8.0_91\bin>keytool -list -v -keystore
这正是您想要的。但是,检查退出信号时出现问题。
Scanner input = new Scanner(System.in);
int studentNum = 0;
ArrayList<Integer> calc = new ArrayList<Integer>();
while (studentNum <= 100) {
System.out.print("Enter a number: ");
calc.add(input.nextInt());
studentNum += 1;
if (input.nextInt() == -99) {
break;
}
}
int min = Collections.min(calc);
int max = Collections.max(calc);
for (int i = 0; i < calc.size(); i++) {
int number = calc.get(i);
if (number < min)
min = number;
if (number > max)
max = number;
}
System.out.println("Max is " + max);
System.out.println("Min is " + min);
这将检查userInput是否等于-99然后停止程序并计算并打印出最小值和最大值。然而,微小的错误是它首先要求你的号码添加到数组列表,然后它会再次要求userInput检查它是否等于-99。但总体而言,它完全符合您的要求。
希望这有帮助。
编辑我将在稍后处理它并找到一种方法来修复该错误,如果没有其他人知道的话。