2014-11-21 155 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的数组中的有效索引。