Java 一个循环工作正常,下一个相同的循环失败

Java 一个循环工作正常,下一个相同的循环失败,java,exception,while-loop,boolean,inputmismatchexception,Java,Exception,While Loop,Boolean,Inputmismatchexception,第二种方法中的第一个循环工作得很好。当用户输入字符而不是数字时,将捕获InputMismatchException,并提示用户仅重新输入数字以继续。 第二个循环失败:如果为下一个问题输入了字符,则会捕获InputMismatchException并显示“…请重试”,但随后程序继续运行,而不会强制用户重新输入数字。 对于1方法中的InputMismatchException,是否可能有多个do/while、try/catch? 我不知道我做错了什么。我认为我在理论上是对的,但显然不是! 我怎样才能

第二种方法中的第一个循环工作得很好。当用户输入字符而不是数字时,将捕获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...