我正在制作一个节目,我想输入“红色”或“黑色”,然后是1-10的数字。
输入应该看起来像Red 7
或Black 3
如果输入无效,我希望程序重新打印该行。我正在考虑使用try {然后捕捉{。但我不确定要检查的条件。
我试过了:
System.out.print("Please choose Black or Red....and a number from 1-10 (Example : Black 4): ");
String color = input.next();
int number = input.nextInt();
if(!color.equals("Red") || !color.equals("red") || !color.equals("Black") || !color.equals("black")) {
System.out.println("Incorrect input. Please enter Black or Red: ");
color = input.next();
}
if(!(number < 0 || number > 10)) {
System.out.println("Incorrect input. Please re-enter a valid number from 1 to 10: ");
color = input.next();
}
答案 0 :(得分:2)
这种情况有很多种方法。我建议如下,它按行读取输入:
String#split(regex)
将输入分隔为数组。String#equalsIgnoreCase(String)
检查颜色输入。Integer#parseInt(String)
解析数字输入。switch
检查号码输入。如果全部拼凑在一起,它将看起来像这样:
div
当然,有一种更清洁的方法,它使用方法和事物,但为了一个干净的答案,我不打算包含它。
答案 1 :(得分:1)
Scanner input = new Scanner(System.in);
String color = "";
int number = -1;
while(!color.equalsIgnoreCase("Black") || !color.equalsIgnoreCase("Red") && (number < 0 || number > 10))
{
System.out.print("Please choose Black or Red....and a number from 1-10: ");
color = input.next();
number = input.nextInt();
}
// \n puts that "quote" on the next line
System.out.println("Color chose: " + color + "\nnumber chose: " + number);
根据OP的要求:
所以只需确保导入之前被捕获的异常,之前如果他们输入2个字符串而不是String和int,它会崩溃,现在它不会崩溃。它现在将抓住“崩溃”并继续前进。
import java.util.InputMismatchException;
现在代码:
Scanner input = new Scanner(System.in);
String color = "";
int number = -1;
while(!color.equalsIgnoreCase("Black") || !color.equalsIgnoreCase("Red") && (number <= 0 || number >= 10))
{
try
{
System.out.print("Please choose Black or Red....and a number from 1-10: ");
color = input.next();
number = input.nextInt();
}
catch(InputMismatchException e) //More specific error
{
e.getMessage();
System.out.println("Invalid entry, most specific. ");
}
catch(Exception e) //less specific general error
{
e.getMessage();
System.out.println("unknown entry error.");
}
}
// \n puts that "quote" on the next line
System.out.println("Color chose: " + color + "\nnumber chose: " + number);
答案 2 :(得分:0)
您将把它放在while循环中,因为您希望继续打印它,直到用户输入有效输入。 while循环条件是如果颜色不等于红色或黑色,并且数字不在1-10之间(输入无效)。因此,如果输入无效,它将继续询问不同的颜色和数字,如果输入有效,它将退出while循环。
String color = "";
int number = -1;
while(!color.equals("Black") || !color.equals("Red") && (number < 0 || number > 10){
System.out.print("Please choose Black or Red....and a number from 1-10: ");
color = input.next();
number = input.nextInt();
}