好的,我知道有几个线程有类似的问题,但我似乎无法找到我的问题的答案。其他人都和我做同样的事情,但他们的代码有效:
下面是期望的输出:
How many numbers do you want to enter?
4
Enter a number:5
Enter a number:11
Enter a number:-2
Enter a number:3
Highest number is: 11
Lowest number is: -2
这是我的代码:
public static void smallestLargest(){
int highest=Integer.MIN_VALUE;
int lowest=Integer.MAX_VALUE;
int num=0;
Scanner sL = new Scanner(System.in);
System.out.println("How many numbers do you want to enter?");
int nums = sL.nextInt();
for(int i=0; i<nums; i++){
System.out.print("Enter a number:");
num = sL.nextInt();
}
if (num > highest){
num = highest;
}
if(num < lowest){
num = lowest;
}
System.out.println("Highest number is: " + highest);
System.out.println("Lowest number is: " + lowest);
}
下面是我得到的输出:
How many numbers do you want to enter?
4
Enter a number:5
Enter a number:11
Enter a number:-2
Enter a number:3
Highest number is: -2147483648
Lowest number is: 2147483647
我让我的朋友在团队观察者试图帮助,因为他比我更好,但我们两个都很难过。谢谢你的帮助。
答案 0 :(得分:2)
而不是num = highest
,您应该highest = num
同样的事情是最低的。
if
&#39}应位于for
循环内(必须为输入的每个数字执行此操作)
答案 1 :(得分:1)
尝试并阅读您的程序流程。基本上,您希望一次读取一个Int,然后确定您读取的数字是您目前为止看到的最高数字还是最低数字。
你的条件分支应该在你的for循环中。
for(...) {
//read value
//if num > highest, then highest = num
//if num < lowest, then lowest = num
}
//print output, etc.
答案 2 :(得分:0)
您的代码存在的问题就在这里。
if (num > highest){
num = highest;
}
if(num < lowest){
num = lowest;
}
如果if(num> gtigh)为真,则将num设置为最高。你真正想做的是
if (num > highest){
highest = num;
}
if(num < lowest){
lowest = num;
}
现在将设置为最低和最高为正确的数字。但是,您还需要在代码中设置一个循环,以检查每次用户输入数字时是否需要更新最高和最低要求。以下代码将为您提供正确的输出。
for(int i=0; i<nums; i++){
System.out.print("Enter a number:");
num = sL.nextInt();
if (num > highest){
highest = num;
}
if(num < lowest){
lowest = num;
}
}