2014-11-21 94 views
0

我正在嘗試製作一個程序,它接收來自用戶的輸入,然後在程序中稍後使用它。我遇到的問題是做一個例外。例如,如果我只希望把用戶在數字0和任何他以前投入之間的下面是一個例子:Java掃描儀if/else和while語句

Scanner input = new Scanner(System.in); 
    System.out.println("What length do you want your array to be?"); 
    int length = input.nextInt(); 
    int[] arr = full(length); 
    print(arr); 
    System.out.println(); 
    System.out.println("Write a number between (0-"+length+"):");//Its here I want to add an exception. 
    int number = input.nextInt();      //if the user types in a greater value 
    check(arr,number);         //of "length" or smaller value than 0 
                 //I want the question to repeat itself 
                 //until the criteria is met 

你不必擔心「檢查」或「打印方法。

+0

這可能是有用的:'如何Java'創造我們自己的例外](http://stackoverflow.com/a/1754473/3928341)以及本[' Oracle Docs Article'](https://docs.oracle.com/javase/tutorial/essential/exceptions/) – nem035 2014-11-21 21:41:10

+2

您是否必須構建自己的Exception類?或者你可以簡單地拋出一個新的異常? – 2014-11-21 21:41:58

+0

我認爲存在一個誤解,我的意思是一個if/else或while語句,它不會讓用戶輸入不符合條件的值。我的英語不是最好的,所以我對此表示歉意。 – tomSurge 2014-11-21 21:46:14

回答

2

我不相信你需要一個Exception,只是一個循環。像do-while循環如

int number; 
do { 
    System.out.println("Write a number between (0-" + length + "):"); 
    number = input.nextInt(); 
    if (number < 0) { 
     System.out.printf("%d is too low%n", number); 
    } else if (number > length) { 
     System.out.printf("%d is too high%n", number); 
    } 
} while (number < 0 || number > length); 
check(arr, number); 
2

你不需要一個例外,只需添加一個do-while循環,檢查它是否是一個有效的條目

// ... 

do 
{ 
    System.out.println("Write a number between (0-"+length+"):"); 
    int number = input.nextInt(); 
} while(number < 0 || number >= length); 

注:我不變的情況不包括length,因爲它似乎你要使用作爲th的索引e數組,並且length不是長度爲length的數組中的有效索引。