java - "While"和 "do while"验证 "for"循环

标签 java

编辑:用户输入一个正数,代码从该数字变为 1。例如,用户输入 8,则代码变为 8、7、6、5、4、3、2、1。

逻辑部分正在工作。我在验证用户是否输入负数时遇到问题。

这是我所拥有的,但它不起作用。

String stringSeries = "";

    int userInput = userInput = Integer.parseInt(JOptionPane.showInputDialog("Enter a positive number to evaluate"));  

    for (int i = 1; userInput >= i; userInput--) 
    {
       while (userInput <= 0)
        {
            userInput = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter a valid number"));  
        }

      stringSeries +=userInput+ ", ";
    }
    System.out.println(stringSeries);

当我输入负数时,程序会显示“构建成功”,而它应该再次要求输入正数。

另外,我怎样才能做到这一点?

最佳答案

如果我正确理解你的意图,你正在尝试读取一个整数,验证它是否大于 0,然后按降序打印从该数字到 1 的所有数字。

如果是这种情况,问题就出在 while 循环的位置上。 for 循环的条件是 userInput >= i。您已将值 1 分配给 i。鉴于此,如果 userInput <= 0 (while 循环的条件),则 for 循环中的代码将永远不会被执行(因为 userInput >= i 或等效的 userInput >= 1 永远不会为 true)。更正的方法是将 while 语句移到 for 循环之前,使其:

String stringSeries = "";

int userInput = userInput = Integer.parseInt(JOptionPane.showInputDialog("Enter a positive number to evaluate"));  

while (userInput <= 0)
{
    userInput = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter a valid number"));  
}

for (int i = 1; userInput >= i; userInput--) 
{
  stringSeries +=userInput+ ", ";
}
System.out.println(stringSeries);

关于结构和习语的一些评论:作业中的第二个 userInput 是不必要的。通常在 for 循环中,i(迭代变量)是要更改的值。更惯用的方法是:

String stringSeries = "";

int userInput = Integer.parseInt(JOptionPane.showInputDialog("Enter a positive number to evaluate"));  

while (userInput <= 0)
{
    userInput = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter a valid number"));  
}

for (int i = userInput; i >= 1; i--) 
{
  stringSeries += i+ ", ";
}
System.out.println(stringSeries);

如果您想使用 do while 循环,代码将为:

String stringSeries = "";

int userInput;    
do {
    userInput = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter a valid number"));  
} while(userInput <= 0);

for (int i = userInput; i >= 1; i--) 
{
  stringSeries += i+ ", ";
}
System.out.println(stringSeries);

关于java - "While"和 "do while"验证 "for"循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28469618/

相关文章:

Java代码分析工具

java - 加载包 org.renjin.cran 时出现 IOException :rgeos: Could not resolve native method 'rgeos_Init' in package 'rgeos'

java - java中如何获取上一个 session id

java - 拆分和替换 Java 字符串

java - 如何将文件保存到 Android 中的任何特定路径

java - Kotlin:在内部使用可变时从 getter 返回不可变集合

java - libGDX 暂停运行几秒钟

java - 与 SqlServer 的连接未在 for 循环 java 中关闭

java - Hibernate + Spring + Maven(框架设置问题)

java - 如何设置 Firebase 存储中的 ImageView ?