TragicFlawz:
// I AMは唯一のスキャナからの単一の文字を受け入れるように私のプログラムを取得しようとして立ち往生。今プログラムは限り最初の文字が記載されている文字の一つであるとして、任意の文字の量を受け入れます。私は、可能な場合のcharAt(0)うちにこのコードを書き換えるか、if文を追加したいと思います。そのような場合(sea.length> 1){}何か。私は十分に理解するために、問題を説明したいと考えています。すべてのヘルプは大歓迎し、あなたの時間をありがとうございました。
public static char promptForChoice(Scanner in) {
System.out.println("High, Low or Seven(H/L/S");
char sel = in.next().charAt(0);
sel = Character.toUpperCase(sel);
int i = 1;
while (i != 0) {
System.out.println("High, Low or Seven(H/L/S");
if (sel == 'H' || sel == 'L' || sel == 'S') {
i = 0;
} else {
System.out.println("You must enter only H, L or S.");
i = 1;
}
}
return sel;
}
アービンド・クマールのAvinash:
char.lengthコマンドはありますか?
いいえ、そのようなコマンドはありません。あなたは使用して入力を取得する必要がありますScanner::nextLine()
し、入力の長さを確認してくださいString
。
次のように実行します。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// Test
Scanner in = new Scanner(System.in);
System.out.println(promptForChoice(in));
}
public static char promptForChoice(Scanner in) {
char sel = 0;
String input;
boolean valid;
do {
valid = true;
System.out.print("Enter H/L/S [High/Low/Seven]: ");
try {
input = in.nextLine();
sel = input.toUpperCase().charAt(0);
if (input.length() == 1 && (sel == 'H' || sel == 'L' || sel == 'S')) {
return sel;
} else {
throw new IllegalArgumentException("You must enter only H, L or S.");
}
} catch (IllegalArgumentException e) {
valid = false;
System.out.println(e.getMessage());
}
} while (!valid);
return sel;
}
}
サンプルを実行します。
Enter H/L/S [High/Low/Seven]: hello
You must enter only H, L or S.
Enter H/L/S [High/Low/Seven]: High
You must enter only H, L or S.
Enter H/L/S [High/Low/Seven]: M
You must enter only H, L or S.
Enter H/L/S [High/Low/Seven]: H
H
何の疑いも/問題の場合にはコメントをお気軽に。