Java 一个循环工作正常,下一个相同的循环失败
第二种方法中的第一个循环工作得很好。当用户输入字符而不是数字时,将捕获InputMismatchException,并提示用户仅重新输入数字以继续。 第二个循环失败:如果为下一个问题输入了字符,则会捕获InputMismatchException并显示“…请重试”,但随后程序继续运行,而不会强制用户重新输入数字。 对于1方法中的InputMismatchException,是否可能有多个do/while、try/catch? 我不知道我做错了什么。我认为我在理论上是对的,但显然不是! 我怎样才能在不分成不同方法的情况下解决这个问题(因为这样我的计算方法就不起作用了)Java 一个循环工作正常,下一个相同的循环失败,java,exception,while-loop,boolean,inputmismatchexception,Java,Exception,While Loop,Boolean,Inputmismatchexception,第二种方法中的第一个循环工作得很好。当用户输入字符而不是数字时,将捕获InputMismatchException,并提示用户仅重新输入数字以继续。 第二个循环失败:如果为下一个问题输入了字符,则会捕获InputMismatchException并显示“…请重试”,但随后程序继续运行,而不会强制用户重新输入数字。 对于1方法中的InputMismatchException,是否可能有多个do/while、try/catch? 我不知道我做错了什么。我认为我在理论上是对的,但显然不是! 我怎样才能
多亏了VGR、恐怖袋熊和Dawood ibn Kareem的快速反应,我现在明白了解决方案。
在下一个循环之前,我重置了“boolean continueLoop=true”,但出现了一个错误。经过更多的研究(这些回答让我走上了正确的道路),我终于发现我通过输入“continueLoop=true”重置了!!大问题解决了,学到了很多东西。我花了这么多时间在这上面!我讨厌java。但是我喜欢Java 当第一个循环开始时,
continueLoop
为真,因为它就是这样初始化的。但是当第二个循环开始时,continueLoop
为false,因为这是导致第一个循环终止的原因。在后续循环之前,您需要将continueLoop
值重置为true
,也就是说input.nextDouble()第二个catch
内的code>会把你烧坏的。它可能应该是input.nextLine()代码>与另一个类似,或者干脆完全忽略。我尝试重置布尔continueLoop=true;在第一个循环之后,现在它给了我一个与我的主方法相关的错误,这个方法也有布尔continueLoop=true;。它说,它的主要功能已经被定义。我已经编辑了上面的代码以包含我的主要方法。这让我很困惑。(我显然是Java新手)@Dawood ibn Kareem谢谢!我把它改成了nextLine
{
Scanner input = new Scanner( System.in );
boolean continueLoop = true;
do{
System.out.print("\nPlease enter weight");
try{
stone = input.nextInt();
while (...)
{
System.out.print("...");
stone = input.nextInt();
}
continueLoop = false;
}
catch ( InputMismatchException inputMismatchException)
{
System.err.printf( "\nException: %s\n",
inputMismatchException );
input.nextLine();
System.out.println("...Please try again.\n" );
}
}while ( continueLoop );
do{
System.out.print("...");
try{
pounds = input.nextDouble();
while (...)
{
System.out.print("...");
pounds = input.nextDouble();
}
continueLoop = false;
}
catch ( InputMismatchException inputMismatchException)
{
System.err.printf( "\nException: %s\n",
inputMismatchException );
input.nextLine();
System.out.println("..." );
}
}while ( continueLoop ); //code continues more methods...