私は、ユーザー入力を求めるプログラムを作成しています。そのような条件の1つは、入力を空文字列にすることができないことです。 (つまり、ユーザーは何も入力せずにEnterキーを押すだけです)。これをどうすればテストできますか?これは私が今までに持っているコードです: (注:メソッドisDateAcceptableは "Number not acceptable"と言いたいので、実際には関係ありません。 編集:私は、現在のコードで、ユーザーが空の文字列を入力すると、カーソルが次の行にプログラムを終了せずに移動するときに追加する必要があります。Java:何も入力しなくてもユーザー入力のプロンプトが表示されるようにする
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;
}
文字列にはisEmptyメソッドがあります。それは働いていないのですか? –
[Javaスキャナで空白行をテストするには?](http://stackoverflow.com/questions/7320315/how-to-test-for-blank-line-with-java-scanner) –
私は、 dこのようなことに 'next()'の代わりに 'nextLine()'を使う傾向があります。一度に1つの単語を入力するのではなく、一度に1行ずつ入力しようとしています。 –