【问题标题】:I don't know what's wrong with the do-while loop我不知道 do-while 循环有什么问题
【发布时间】:2015-12-03 09:01:52
【问题描述】:

我想制作程序,以便当用户按下一个不在 1-10 之间的数字时,它会再次循环;它再次运行。注意:大小写介于字符串编号和默认值之间

do {
    String responded;
    responded = JOptionPane.showInputDialog("Do you understand do while loops?");
    String number = JOptionPane.showInputDialog("Choose a number between 0 & 9 to generate \nthe corresponding word to that number or \npress 10 to exit the program");

                default:
    JOptionPane.showMessageDialog(null, "Please make sure the number inserted is between 0 & 10.", "Error", JOptionPane.ERROR_MESSAGE);
}
    } while (responded.equalsIgnoreCase("No"));

【问题讨论】:

  • 您希望编译器神奇地知道String number 应该在"0".."9" ("10") 范围内。 default: 是来自 switch 结构的标签。

标签: java loops do-while


【解决方案1】:

试试下面的代码:

public static void main(String[] args) {

    String responded;
       do{
         responded = JOptionPane.showInputDialog("Do you understand do while loops?");
         boolean legitimate = false;
         do {
             String number = JOptionPane.showInputDialog("Choose a number between 0 & 9 to generate \nthe corresponding word to that number or \npress 10 to exit the program");
             switch(number) {
             case "0" :
             case "1" :
             case "2" :
             case "3" :
             case "4" :
             case "5" :
             case "6" :
             case "7" :
             case "8" :
             case "9" : legitimate = true;
                        break;
             default:
                 JOptionPane.showMessageDialog(null, "Please make sure the number inserted is between 0 & 10.", "Error", JOptionPane.ERROR_MESSAGE);
                 break;
             }
     } while(!legitimate);
} while (responded.equalsIgnoreCase("No"));

}

【讨论】:

  • 谢谢伙计,它可以工作,但是当我从 0-9 中选择一个数字时,程序就会关闭......
  • 你在你的问题中说,只有当输入的数字不在 0 到 10 之间时,你才希望这个循环。这就是为什么当你对第一个问题说“不”以外的任何内容时程序关闭并提供正确的号码
  • 我的意思是另一种观点,哈哈……这是一个 Guesstheword 程序……上面有一个数组,其中 10 个不同的单词标记为 0-9,效果很好……让我看看尝试用不同的词解释它....程序应该让用户选择一个介于 0-10 之间的数字(10 是让用户退出程序的数字)..在你给我这个代码之前,当用户输入了 0-10 以外的数字,程序刚刚关闭...我希望程序重复循环,直到用户输入 1-10 的数字...我不希望程序在用户输入 1- 时关闭9
  • 兄弟你明白我想说什么吗?
【解决方案2】:

你的括号有问题:

}
    } while (responded.equalsIgnoreCase("No"));

你需要:

    } while (responded.equalsIgnoreCase("No"));
}

还有为什么你有这个default:那里

【讨论】:

  • 默认设置是这样,当用户输入 0-10 以外的任何其他数字时,它会显示警告,并且由于某种原因它仍然无法正常工作......
  • 它仍然给我错误:} while (responded.equalsIgnoreCase("No")); } } }
  • 我是这个网站的新手,在 atm 上使用它有点垃圾
【解决方案3】:

虽然我没有完全理解你的要求,但根据我对你的要求的理解,请找到下面的代码:

    String responded;
     do{
         responded = JOptionPane.showInputDialog("Do you understand do while loops?");
         boolean legitimate = true;
         do {
             String number = JOptionPane.showInputDialog("Choose a number between 0 & 9 to generate \nthe corresponding word to that number or \npress 10 to exit the program");
             switch(number) {
             case "0" :
             case "1" :
             case "2" :
             case "3" :
             case "4" :
             case "5" :
             case "6" :
             case "7" :
             case "8" :
             case "9" : 
                 break;
             default:
                 legitimate = false;
                 JOptionPane.showMessageDialog(null, "Please make sure the number inserted is between 0 & 10.", "Error", JOptionPane.ERROR_MESSAGE);
                 break;
             }
         } while(legitimate);
     } while (responded.equalsIgnoreCase("No"));

【讨论】:

  • 现在,当我输入任何不在 0-10 之间的数字时,程序会给我一个错误而不是关闭
  • 你想在输入的数字在 0 - 9 之间时保持循环,还是在输入的数字不在范围(0-9)时保持循环。
  • 在 0-9 之间输入时
猜你喜欢
  • 2011-03-10
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多