在开始之前,我要感谢大家的帮助。我建议不要给我代码,而是指出错误的地方。谢谢!
过去几个小时我一直在努力解决这个问题,而且我似乎无法看出自己哪里出错了。我试图继续询问用户输入,直到用户输入-1,这是sentinel值。输入标记值后,程序将显示用户输入的整数及其总和。由于我不知道的原因,打印值仅为-1,总和完全关闭。这是我的代码:
import java.util.Scanner;
public class UserSum
{
public static void main(String args[])
{
//prompt user to enter numbers
Scanner userInput = new Scanner(System.in);
System.out.print("Enter positive integers. Enter -1 to stop. ");
int integers = userInput.nextInt();
//sum is initially set to 0
int sum = 0;
//execute commands as long as the input does not equal -1
while(integers != -1)
{
//keep gathering user input
integers = userInput.nextInt();
sum += integers;
}
//print the results to the user
System.out.println("You entered: " + integers + ", ");
System.out.println("Sum is: " + sum);
}
}
答案 0 :(得分:1)
您的和值输出不正确的原因是因为您在添加总和之前读入了两个输入。一次读取完全在while循环之前完成,一次在添加到while循环中的sum之前完成。您输入的第一个值将永远不会保存在总和中。
尝试实施类似于以下方法的内容......
int sum = 0;
int value = 0;
while (value != -1) {
sum += value;
value = input.nextInt();
sysout(value);
}
sysout(sum);
答案 1 :(得分:1)
ArrayList是一种在尝试存储多个值时非常适用于所有意图和目的的结构。谷歌是你的朋友,请谷歌帮你一个忙,你就可以开始使用ArrayLists了。在循环中,您可以添加它,存储所有这些。
答案 2 :(得分:0)
你称之为整数,但它实际上不是整数列表,只是最后一个读取。检查你总结的地方。你没有总结第一个读数,但你总结了最后一个(-1)...很容易看到,因为你有两行读取输入,这已经是可疑的(参见循环的另一个答案) )。
答案 3 :(得分:0)
根据您的要求,我不会发布代码来提供帮助,但会提供有关解决方法的建议。
首先,处理用户输入的方式是一个很好的开始,但它可能不是100%正确。我认为' while'循环很好。问题是你正在阅读“第一个int'”,而不是将它添加到总和中,然后阅读' next int'在你用' int'增加总和之前。
因此,我建议在while循环中切换整数和求和行,或者最初声明sum等于整数。
就打印所有使用的整数而言,您必须使用数组或数组列表。您首先要确定用户输入的整数数量,不包括' -1',并根据该数据声明一个数组。然后你会读到数组中的所有整数,然后在结束时总结它们。总的来说,我认为这将是解决这个问题的一种更有效的方法。
我希望这有帮助!
没有数组
如果不使用数组,则可以使用字符串并使用用于计算总和的整数追加字符串