2014-09-12 3 views
0

Я пытаюсь написать функцию, которая вернет целое число в диапазоне 1 ... 9 на основе ввода. Но я не могу понять, как управлять правильным результатом, поэтому, если пользователь вводит число за пределами диапазона от 1 до 9, тогда он дает ошибку.Как выбросить ошибку при вводе пользователя?

Вот мой код:

public static int pmove() throws IOException{ 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String br_rl = br.readLine(); 
    int br_int = Integer.parseInt(br_rl); 
    if (br_int > 0 && br_int < 10) { 
    return br_int; 
    } 
    else { 
    // ??? 
    } 
} 
+0

«Это дает ошибку». Это очень расплывчато. Что вы хотите, чтобы программа выполняла? – 2014-09-12 10:31:02

+0

throw new Exception («Бросьте сюда»); попробуй это. – Krishna

ответ

-1

Вы можете попробовать что-то подобное

public static int pmove() throws IOException { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String br_rl = br.readLine(); 
    int br_int = Integer.parseInt(br_rl); 
    if (br_int > 0 && br_int < 10) { 
     return br_int; 
    } else { 
     throw new IOException("Input Out of Range"); 
    } 
} 

Вы можете создать свой собственный Exception, чтобы сделать это лучше.

+0

Возможно, 'IllegalArgumentException' будет более уместным. – 2014-09-12 10:30:32

+0

@ Tichodroma Или Лучше иметь пользовательское исключение. –

+0

Я понял, что могу использовать try catch в основной функции, чтобы определить требуемый int, спасибо за ответ, однако! – Evald

0

Вы можете создать свое собственное пользовательское исключение, и вы можете использовать это.

Попробуйте это: -

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

//User define exception 
class MyException extends Exception{ 
    public MyException(String error) { 
     System.out.println("Error ::"+error); 
    } 
} 

public class NumerTest { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args)throws IOException { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     String br_rl = br.readLine(); 
     int br_int = Integer.parseInt(br_rl); 
     if (br_int > 0 && br_int < 10) { 
     System.out.println("Your Number is ::"+br_int); 
     } 
     else { 
      try{ 
       //Throw your own defined exception 
       throw new MyException("Invalid Number Entry:::Try Again between 0-9"); 
      }catch(Exception e){} 
     } 

    } 

} 

Надеется, что это поможет.

0

Если вы хотите, чтобы задаёте, когда вход не так, то вы можете сделать это:

public static int pmove() throws IOException{ 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String br_rl = br.readLine(); 
    int br_int = Integer.parseInt(br_rl); 
    while (br_int <= 0 || br_int >= 10) { 
     System.out.println("Wrong input"); 
     br_rl = br.readLine(); 
     br_int = Integer.parseInt(br_rl); 
    } 
    return br_int; 
} 

Тестирование с (System.out.println(pmove());:

11 
Wrong input 
25 
Wrong input 
4 
4 

Теперь, если вы хотите прекратить читать вас может вызвать исключение, как указывали другие.

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