попробуйте поймать проблему // во время размещения цикла - PullRequest
0 голосов
/ 24 сентября 2019

Моя программа принимает целочисленный ввод, затем больший целочисленный ввод, затем строку.

"Введите число:"

"Введите большее число:"

"Введите строку:"

Я пытался использовать попытку/ catch для отлова случаев, если вместо целого числа была введена строка.Я вроде получил код для работы, но после выполнения сообщения об ошибке он пропускает следующий вводный вопрос int и сразу переходит к «Ввести строку».

Я предполагаю, что где-то нужен цикл while, но мне сложно определить, где именно его разместить и какой аргумент использовать.Проще говоря, (я думаю) мне нужно: while (input! = String).Я просто не знаю, как это сделать.

try {
            System.out.println("Enter a number: ");

            int start = myscanner.nextInt();

            System.out.println("Enter a bigger number: ");

            int end = myscanner.nextInt();

            if (start > end) {
                System.out.println("Error: Start should be smaller.");
            } else {

                int result = sumInt(start, end);
                System.out.println("Result: " + result);
            }
        } catch (InputMismatchException exception) {
            System.out.println("Enter a number, not a string.");

        }
```````````````````````````````````````````````````````````````````````````

1 Ответ

0 голосов
/ 24 сентября 2019
import java.util.Scanner;
public class Main
{
    public static void main(String[] args) {
       try{
            Scanner myscanner = new Scanner(System.in); 
            int option =1;
            do{
               System.out.println("Enter a number: ");
               String start = myscanner.next();
               boolean sflag= isInteger(start);
               if(!sflag )
               {System.out.println("Error: value not Integer.");  continue;}
               System.out.println("Enter a bigger number: ");
               String end = myscanner.next();
               boolean eflag=  isInteger(end);
              if( !eflag)
                {System.out.println("Error: value not Integer.");  continue;}
              if ( Integer.parseInt(start) > Integer.parseInt(  end)) {
                 System.out.println("Error: Start should be smaller.");
              } else {
                 int result = sumInt( Integer.parseInt( start),  
                 Integer.parseInt( end));
                 System.out.println("Result: " + result);
                 System.out.println("select following option");
                 System.out.println("1. continue");
                 System.out.println("2.exit");
                 option = myscanner.nextInt();
                  //isInteger(option);
             }

        }while(option != 2);

     }catch(Exception e){
        System.out.println(e);
    }
}
public static boolean isInteger( String input ) {
try {
  Integer.parseInt( input );
  return true;
 }
  catch( Exception e ) {
  return false;
 }
 }
      public static Integer sumInt(int start, int end){
      return start + end;
   }
}
...