尝试将此输入输入5个不同的温度读数并输出最低输入。我是java新手
System.out.println("Enter 5 temperature readings");
Scanner input = new Scanner(System.in);
int count = 1;
while (count <= 5){
int temp = input.nextInt();
if (temp < temp){
low = temp;
}
count++;
}
System.out.println(------);
答案 0 :(得分:2)
首先,您从未实例化变量low
。另外,我们在循环之外需要low
,因此请确保在循环之外实例化这些变量,因此我们可以在输出low
时使用它们。让我们用
int low = Integer.MAX_VALUE;
你可能会问“为什么会有Integer.MAX_VALUE?”这是因为1)变量low
必须在用于比较之前进行初始化,2)我们不能使用0,因为如果温度不低于0,则0将为低! Integer.MAX_VALUE是int
可以容纳的最高值,因此它远高于低温。
接下来,让我们看看你的条件,我已经看到了一个问题:
if (temp < temp)
您将temp
与temp
进行比较,这是一回事!这意味着这个条件永远不会成立。您想要使用的是
if (temp < low)
以便正确记录低温。接下来,计算low
后,您可以使用
low
System.out.println(low);
这应该为您提供五个输入值的低温。
重构机会
如果您想让代码更清晰,我建议使用for
循环而不是您使用的while
循环。这样,你的循环就会变成
for (int i = 0; i < 5; i++)
{
//your logic here
}
这意味着不需要count
变量。
答案 1 :(得分:1)
我将继续并假设这是您的所有相关代码。如果是这样,那么你有两个问题。第一个问题是你永远不会声明低。我建议在声明计数之前或之后将低值声明为int。你遇到的第二个问题是你正在将temp与自身进行比较。 temp永远不会低于temp,所以基本上你创建了一个永远不会运行的代码块。你应该写的是temp&lt;低。这是您的代码,包含必要的更改。
System.out.println("Enter 5 temperature readings");
Scanner input = new Scanner(System.in);
int count = 1;
int low = input.nextInt(); //the lowest value cannot possible be higher than this.
while (count <= 4){ //made the loop shorter because one value was already read.
int temp = input.nextInt();
if (temp < low){
low = temp;
}
count++;
}
System.out.println(low);
我离开了while循环,因为它在技术上是正确的,但你真的应该在这里使用for循环。 (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html)