java - 为什么我的非常简单的 while 循环会重复一次额外的时间?
问题描述
这是我的while循环。该程序对整数求和,直到输入负数。此时循环应该中断并且应该打印“再见”。然而,它每次在说再见之前都会添加负数。我不确定这里出了什么问题。请帮忙?!
import java.util.Scanner;
public class While {
public static void main(String[] args)
{
int input = 5;
int sum = 0;
while(input >= 0)
{
System.out.println("Please enter a positive integer: ");
Scanner in = new Scanner (System.in);
input = in.nextInt();
sum = sum + input;
System.out.println("Running total: " + sum );
}
System.out.println("Goodbye!" );
}
测试:
Please enter a positive integer:
5
Running total: 5
Please enter a positive integer:
10
Running total: 15
Please enter a positive integer:
-1
Running total: 14
Goodbye!
我不想得到14的返回值,它应该简单地说再见!
解决方案
这是我的解决方案:
while(input >= 0)
{
sum = sum + input;
System.out.println("Running total: " + sum );
System.out.println("Please enter a positive integer: ");
Scanner in = new Scanner (System.in);
input = in.nextInt();
}
System.out.println("Goodbye!" );
}
通过在初始化时和输入第一个整数之前计算总和。它似乎按照我现在想要的方式工作。谢谢你的帮助。
推荐阅读
- javascript - 如何避免调用 postmessage
- r - 如果有空白空间,则处理连续出现
- angular - 显示对话框消息
- python - 使用 API 和 Python 从 Virustotal 检索 IP 位置
- python - cv2 更新帧需要很长时间
- reactjs - 反应 onSubmit e.preventDefault() 有时不起作用 + Axios
- r - 在 ggplot 中显示填充数据的百分比
- c++ - 在linux上的代码oss中导入替代头文件[已解决]
- nginx - 如何在 CentOS 上使用 Nginx 设置两个具有两个不同端口的块服务器(基于 Ip)?
- vue.js - 如何在 vuejs 中指定 v-for 中的数组索引?