我需要用户输入一些数字,程序会将它们相加,直到最后一个小于前一个。像这样:
if ( strcmp( phrases[p][i], word ) == 0 )
// the word matches
到目前为止,我只将两个数字相加,但与其余数字不一致。
Next:1
Next:3
Next:6
Next:1
Result:10
答案 0 :(得分:2)
在此行中,您将继续覆盖之前的结果:
result = number + number2;
尝试将其更改为:
result += number;
在while循环之前添加以下作业:
result = number2;
答案 1 :(得分:1)
工作代码:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int number, number2, result;
number2 = scan.nextInt();
result = number2;
while ((number=scan.nextInt())>number2){
result += number;
number2=number;
}
System.out.println(result);
scan.close();
}
答案 2 :(得分:1)
您可以使用+=
来简化操作。另外,给你的变量更好的名字。
//store last input, current input, and the sum
int last = 0;
int result = 0;
int input = 0;
//note that if you enter invalid input, this will go into an infinite loop
while ((input = scan.nextInt()) > last){
result += input; //directly adds the input to the sum
last = input;
}
System.out.println("Sum: " + result);
为了防止无限循环,您应该使用try
- catch
块来检测无效输入,使用scan.next()
来清除无效数据,如下所示:
while (input > last){
try{
input = scan.nextInt();
result += input;
last = input;
}catch (InputMismatchException e){
System.err.println("Invalid input"); //you could also use .out
scan.next(); //eliminate invalid data
}
}
答案 3 :(得分:0)
您可以使用result += number
。这会将number
添加到result
。
请注意,number = scan.nextInt()
是条件表达式中的赋值。它们并不符合每个人的口味。事实上,你的代码中有一个错误(第一个数字不包括在总和中),所以你无论如何都需要重构:用int result = number2 = scan.nextInt();
初始化是一种方式。
答案 4 :(得分:0)
怎么样:
number2 = 0;
number = scan.nextInt();
while (number > number2) {
result += number;
number2 = number;
number = scan.nextInt();
}
答案 5 :(得分:0)
%px cd /path/to/dir/containing/gillespie.so
答案 6 :(得分:0)
每次都会删除结果,试试这个。
onclick="window.location.reload();"
答案 7 :(得分:0)
也许......
System.out.println( "Enter a number: " )
number = scan.nextInt();
result = number;
do {
System.out.println( "Enter a number: " )
number2 = scan.nextInt();
result += number2;
number = number2;
} while ( number2 >= number );