我正在编写一个程序,询问用户输入并在不满足任何条件的情况下继续提示用户输入有效信息。一个这样的条件是输入不能是空字符串。 (即用户不输入任何东西,只需按Enter键)。我该如何测试呢?这是我到目前为止的代码: (注意:方法isDateAcceptable在这里并不真正相关,因为我希望它说“数字不可接受。”然后重新提示用户是否输入“”)。 编辑:我应该用当前代码添加,当用户输入一个空字符串时,光标只是移动到下一行而不结束程序。
public static String getNumOrDate(Scanner console){
System.out.print("Enter a number or a date mm/dd/yyyy (-1 to exit):");
String input = console.next();
while(!input.equals("-1")) {
if(input.isEmpty()){
System.out.println("Number not acceptable.");
getNumOrDate(console);
}
if (input.contains("/")) {
while (!isDateAcceptable(input)) {
System.out.println("Date not acceptable.");
getNumOrDate(console);
}
} else if (canBeParsed(input)) {
while (!isNumberAcceptable(input)) {
System.out.println("Number not acceptable.");
getNumOrDate(console);
}
}
}
System.out.println(isNumberAcceptable(input));
return input;
}
public static boolean canBeParsed(String input){
boolean parsable = true;
try{
Integer.parseInt(input);
}catch(NumberFormatException e){
parsable = false;
}
return parsable;
}
public static boolean isNumberAcceptable (String s){
boolean isAcceptable = true;
int numDigits = s.length();
if(s.isEmpty()&& s == null){
isAcceptable = false;
}
for(int i = 0; i < numDigits; i++){
if(!Character.isDigit(s.charAt(i))){
isAcceptable = false;
break;
}
}
if(isAcceptable){
int number = Integer.parseInt(s);
if((number < 1 && number != -1) || number > MAX_NUMBER){
isAcceptable = false;
}
}
return isAcceptable;
}
答案 0 :(得分:0)
我建议你创建一个新的JFrame窗口并将输入字段和一个按钮拖入其中。选择按钮并在其上添加一个事件。然后你可以使用方法getText()来创建字符串。并检查它是否是是“或不”。如果满足您的要求,您可以关闭Jframe,否则它仍将保持打开状态。