如何在Java中实现以下循环

时间:2011-06-28 18:04:02

标签: java

我是一名自学Java的noob程序员,我在其中一个练习中遇到了以下问题:

//要求用户输入他喜欢的数字。然后计算这些数字的平均值。

有人能给我一些暗示我该怎么做的吗?到目前为止,我认为最好的是要求用户输入一些命令以退出循环。但是如何存储输入?

感谢您的时间和帮助!

8 个答案:

答案 0 :(得分:2)

是的,您需要用户输入要从循环中断的内容。例如:

ArrayList<Integer> list = new ArrayList<Integer>();
Scanner input = new Scanner(System.in);

while(true)
{
    int num = input.nextInt();

    if(num == -1)
       break;

    list.add(num); // add number entered to list
}

以上使用Scanner类和ArrayList类。

或者你可以这样做:

ArrayList<Integer> list = new ArrayList<Integer>();
Scanner input = new Scanner(System.in);

while(true)
{
    int num = input.next();

    if(num.equals("exit"))
       break;

    list.add(Integer.parseInt(num)); // convert String to Integer and add number entered to list
}

这使用字符串而不是整数,如果可以接受任何数字可能更有用,因此你不能用它来从循环中断。

答案 1 :(得分:2)

虽然你可以使用整数的ArrayList:ArrayList<Integer>这个短问题相当多。

理想情况下,您可以跟踪2 int,其中一个包含条目数,另一个包含总和。

int counter = 0;
int sum = 0;

当用户输入新号码时,只需执行以下操作:

counter++;
sum = sum + [the number entered]

当用户输入数字时,返回

的值
sum / counter;

空输入可以发出信号,然后结束号码提交。因此,在循环时,检查字符串输入是空还是空:

if(input == null || input.equals("")){
    // finish up and break out of the loop
}

答案 2 :(得分:2)

实际上,您甚至不需要单独存储这些数字。

首先让您的用户知道输入一个空行表示输入结束。

然后有一个名为long total(或BigInteger)的变量,并继续运行该变量中的数字总数,并将变量count中输入数字的计数作为计数器。

读完所有输入后,只需将平均值输出为total/count,其中count是用户输入的总数。

您可以使用Java scanner从输入中读取数字。

答案 3 :(得分:1)

您应该使用ArrayList<Integer>

调用add()方法为其添加数字。

答案 4 :(得分:1)

使用while (true) {}循环输入数字。当用户输入最终数字时(例如,他输入一个字母),使用break退出循环。

编辑:无需存储所有输入数字。只需将它们全部添加到一个整数,并将loopcount存储在另一个整数中。循环之后,您执行result = total / loops

int total = 0, loops = 0, result;
while (true) {
    String tmp = getInput();
    if (tmp.equals("q")) {
        break;
    }
    total += Integer.parseInt(tmp);
    loops++;
}
result = total / loops;

答案 5 :(得分:1)

你不必将整数存储在某个地方:你可以保留到目前为止所看到的整数和你看过多少个整数的总和,然后返回两个数字之间的分数。

如果您想要存储它们,请使用您想要使用的List接口的任何实现。

当然,你必须在两种解决方案上处理可能的整数溢出。 使用“首先存储所有整数,然后计算平均值”更容易(您可以循环数组,将元素/大小与计算平均值相加),但即使使用其他方法也可以处理它;例如:

while (true) {
  num = readInteger();
  n++; 
  average = average / n * (n-1) + num / n;
}

答案 6 :(得分:1)

如果您之后需要这些数字,请按照SLaks的建议并将它们存储在ArrayList中。您可以找到ArrayList here的官方文档。

但是,如果您只需要总和,那么只需跟踪用户输入数字的“运行总和”即可。显然,需要从用户向程序发出某种消息,表明他/她已完成输入(另一种方法是询问用户预先输入了多少数字)。

int sum = 0;
String s;

while( !( s = in.readLine() ).equals( "stop" ) )
    sum += Integer.parseInt( s );

答案 7 :(得分:0)

您还可以在循环之前询问用户元素数量(n)。初始化该大小的数组(n)并使用0到n的for输入数字并将它们保存到数组中。这样您就不必等待'exit'命令,尽管您输入的数字不会超过之前指定的数字。