我是一名自学Java的noob程序员,我在其中一个练习中遇到了以下问题:
//要求用户输入他喜欢的数字。然后计算这些数字的平均值。
有人能给我一些暗示我该怎么做的吗?到目前为止,我认为最好的是要求用户输入一些命令以退出循环。但是如何存储输入?
感谢您的时间和帮助!
答案 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'命令,尽管您输入的数字不会超过之前指定的数字。