我正在尝试读入并添加(仅)正整数,直到输入负整数。仅当输入负整数时,程序才会停止。我能想到的最好的代码是下面的代码,但问题是即使读取负整数它也不会停止。 PS:我还在学习中,请耐心等待。我尝试将
&& input2!<0
添加到 while 循环条件,但出现错误。关于如何让它按照我想要的方式运行有什么建议吗?谢谢。
public class Total{
public static void main(String[] args){
System.out.println("Enter an integer: ");
Scanner entry = new Scanner(System.in);
int input1 = entry.nextInt();
System.out.println("Enter another integer: ");
int input2 = entry.nextInt();
int total = input1 + input2;
while (input2 > 0){
System.out.println(total + "\nEnter another interger: ");
total += entry.nextInt();
}
}
}
您需要更改正在测试的变量,这里是input2,循环的内部。不然连退出的机会都没有。您在循环中更改的只是总变量,而 input2 保持不变,因此每次测试时,它都保持 >0,这就是您陷入困境的原因。为什么不再尝试一次,这次更改 input2(并且仍然使用 input2 更改总计),看看是否无法获取它。
您的 input1 和 input2 直接添加是一种缺陷,其目的是在第一次输入负数时退出,但我在下面显示的代码可以工作。如果输入的数字非负,它只会提示用户输入任何其他数字,并且如果输入的数字非负,它只会对输入的数字求和。
package stackoverflow.answers;
import java.util.Scanner;
public class Total {
public static void main(String[] args) {
int total = 0, input = 0;
/* Print out your "request" for an integer
* so the user knows to enter something.
*/
System.out.print("Enter an integer: ");
/* Create a Scanner on the System.in stream */
Scanner entry = new Scanner(System.in);
/* Loop while the entered number is > 0 */
while ((input = entry.nextInt()) > 0) {
/* If the input > 0, add it to total */
total += input;
/* Print out the request again. */
System.out.print("Total: " + total + "\nEnter an integer: ");
}
/* Just for kicks, print out the total
* (only useful if the first entered number
* is negative and the total would be 0). */
System.out.println("Total: " + total);
}
}
如果你想对负数求和,然后退出,我建议将 while 循环更改为 do-while 循环,如下所示:
/* Get an integer and add it to the sum, and
* then loop while the entered number is > 0 */
do {
/* Get the integer */
input = entry.nextInt();
/* If the input > 0, add it to total */
total += input;
/* Print out the request again. */
System.out.print("Total: " + total + "\nEnter an integer: ");
} while (input > 0);
您在循环内接受的数字不会存储到 input2 变量中。所以程序永远不会退出。顺便说一句,你甚至不需要 input2。变量 input1 就足够了。查看示例程序 如下:
public static void main(String[] args){
System.out.println("Enter an integer: ");
Scanner entry = new Scanner(System.in);
int input1 = entry.nextInt();
int total =input1;
while (input1 > 0){
System.out.println(total + "\nEnter another interger: ");
input1 = entry.nextInt();
total += input1;
}
}
public class WhileLoopExample {
public static void main(String[] args) {
int i=1;
System.out.println("While Loop Demo");
while(i<=10){
System.out.println(i);
i++;
}
}
}
int input1 = entry.nextInt();
System.out.println("Enter another integer: ");
int input2 = entry.nextInt();
int total = input1 + input2;
while (input2 > 0){
System.out.println(total + "\nEnter another interger: ");
total += entry.nextInt();
在最后一行中,您直接获取输入而不检查其积极性,您直接将其添加到总计中。另外,在 while 循环中,您的条件是
while(input2>0)
。假设你的 input2 得到一个正值,那么 while 循环将永远不会结束。因此,通过将代码替换为以下代码来进行更改
int input1 = entry.nextInt();
if(input1>0)
int total =input1;
while (input1 > 0){
System.out.println(total + "\nEnter another interger: ");
input1 = entry.nextInt();
if(input1>0)
total += input1;
}
while(Boolean_expression) {
// Statements
}
布尔表达式如 true/false;
// Statements like System.out.prinln("Jai Shree Ram");
这里有一个简单的更改,您可以尝试使用 do while 循环,而不是使用 while 循环!我知道这已经晚了,但我正在一路学习,并将其作为一种练习!
Scanner scanner = new Scanner(System.in);
System.out.println("Enter an integer: ");
int input1 = scanner.nextInt();
System.out.println("Enter another integer: ");
int input2 = scanner.nextInt();
int total = input1 + input2;
do{
System.out.println(total + "\nEnter another integer: ");
input2 = scanner.nextInt();
total += input2;
}while(input2 > 0); //leaves when input is < 0
根据我的理解,input2变量在循环开始之前就已经被赋值了,因此当您尝试再次输入时它将不起作用,因为您没有更改input2变量。谢谢你的问题!
Q1 - 定义一个名为的扫描仪对象 输入,让用户输入10 数字,然后对所有数字进行求和 10个数字,并打印结果 最后的操作。
Q1 - 定义一个名为 input 的扫描仪对象,让用户输入 10 个数字,然后对所有 10 个数字进行求和,最后打印运算结果。
在此输入图像描述 该图回答了上述问题。有其他问题欢迎评论。