2015-01-31 6 views
1

Я пытаюсь изменить мою программу, так что даже когда пользователь ввел строку вместо сбоя программы, она должна продолжать цикл и просить пользователя введите класс экзамена, который должен быть целым числом, только если пользователь ввел целое число, если программа завершится. Я имею в виду код в блоке do-whileКак заставить программу продолжать цикл до тех пор, пока пользователь не введет целое число

import java.util.InputMismatchException; 
import java.util.Scanner; 


public class CatchingException { 

public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 
    int score; 
    String choice; 


    try { 
    System.out.println("Enter your percentage mark: "); 
    score = scan.nextInt(); 


    do { 
     if(score <40) { 
      System.out.println("You FAILED"); 
     }else if(score >=40 && score <50){ 
      System.out.println("Your grade: PASS MARK"); 
     }else if(score >=50 && score <60) { 
      System.out.println("Your grade: 2:2"); 
     }else if (score >=60 && score <70) { 
      System.out.println("Your grade: 2:1"); 
     }else { 
      System.out.println("Your grade: 1:1"); 
     } 

     System.out.println("Do you want to enter another grade: "); 
     choice = scan.next(); 
     if(choice.equalsIgnoreCase("yes")) { 
      System.out.println("Enter your percentage mark: "); 
       score = scan.nextInt(); 
       System.err.println("Incorrect Input"); 
      } 
    }while(); 

    }catch(InputMismatchException e) { 
     System.err.println("Incorrect Input "); 
    } 

    System.out.println("program terminated"); 
    scan.close(); 

} 

    } 

ответ

0

Используйте логическую переменную, чтобы отслеживать, сохранять ли цикл. Например:

boolean loop = true; 
do { 
    // set loop to false when you want to end 
} while(loop); 
0

так что вы можете сделать:

int score = null; 
boolean isInt = false; 

do { 
    System.out.println("Enter your percentage mark:"); 

    try { 
     score = scan.nextInt(); 
     isInt = true; 
    } catch (InputMismatchException e) { 
     //Not An Integer 
     isInt = false; 
    } 
} while(false) 

//Do you if statements here if it gets out of the while loop which means the user entered an int 
0

Вместо того, если предположить, что число занесены является int, вы можете ввести его в качестве String и петли, пока эта строка не представляет int:

int intScore; 
String score; 
boolean gotInt = false; 
while (!gotInt) { 
    score = scan.next(); 
    try { 
     intScore = Integer.valueOf(score); 
     gotInt = true; 
    } catch (NumberFormatException e) { 
     // output some warning 
    } 
} 
0

Считаете ли вы использование JOptionPane для ввода данных от пользователя? Он может отображать небольшое окно с текстовым полем и кнопку «ОК» и «Отмена», которая идеально подойдет вашим потребностям.

Вот документация JOptionPane # showInputDialog:

static String showInputDialog(Component parentComponent, Object message, String title, int messageType) 

Показывает диалоговое окно с запросом ввода от пользователя основателей к parentComponent с помощью диалога, имеющего название заголовка и типа сообщений MessageType.

Смежные вопросы

 Смежные вопросы