使用循环输入

时间:2014-03-02 19:28:09

标签: java loops java-io

尝试将此输入输入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(------);

2 个答案:

答案 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)

您将temptemp进行比较,这是一回事!这意味着这个条件永远不会成立。您想要使用的是

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