上記にエラーチェックを追加したいと思います。 sFirstNameが正しい場合、Yで確認され、コードの次のセクションに移動します。それがNならば、コードを再実行します。それがYまたはN以外のものなら、ifを再実行します。Java ifまたはexception?
私は例外を見ましたが、上記に該当するかどうかはわかりません。どんな助けもありがとう! mabyeあなたがそれらのいくつかが好き -
は、私はあなたの例のカップルをcreaded、
上記にエラーチェックを追加したいと思います。 sFirstNameが正しい場合、Yで確認され、コードの次のセクションに移動します。それがNならば、コードを再実行します。それがYまたはN以外のものなら、ifを再実行します。Java ifまたはexception?
私は例外を見ましたが、上記に該当するかどうかはわかりません。どんな助けもありがとう! mabyeあなたがそれらのいくつかが好き -
は、私はあなたの例のカップルをcreaded、
、ありがとうございました。 私の個人的な意見は、できるだけ少ない例外を使用することです。制御フローを非常に例外的に中断させたり、例外を逃したりする必要があります。実行時例外では扱いにくい可能性があります。情報隠蔽ではありません)、キャッチブロックを試すのは単純なif文に比べて非常に醜いです:-)しかしコードには:
private boolean confirmFirstName(String firstName) {
System.out.println("You wrote "
+ firstName
+ " is that correct? \n"
+ "Y or N");
final String answer = sc.next().toUpperCase();
return answer.equalsIgnoreCase("y");
}
private String enterFirstName() {
System.out.println("Please enter Client's first name");
final String sFirstName = sc.nextLine().toUpperCase();
return sFirstName;
}
private void getFirstNameV1() {
final int maxTrials = 5;
// loop for max trials times and break if input is correct
for (int i = 0; i < maxTrials; i++) {
final String firstName = enterFirstName();
if (confirmFirstName(firstName)) {
setMonthlyRates(firstName);
break;
}
}
}
private void getFirstNameV2() {
final String firstName = enterFirstName();
final boolean valid = confirmFirstName(firstName);
// use a recursive function but take care,
// there is no exit instead of entering a valid value otherwise you are in an infinite loop
if (valid) {
setMonthlyRates(firstName);
} else {
getFirstNameV2();
}
}
private void getFirstNameV3() {
// first time input
String firstName = enterFirstName();
boolean valid = confirmFirstName(firstName);
// if not valid loop until its valid, there is also no exit of this loop
while (!valid) {
firstName = enterFirstName();
valid = confirmFirstName(firstName);
}
setMonthlyRates(firstName);
}
private void getFirstNameV4() {
// first time input
String firstName = enterFirstName();
boolean valid = confirmFirstName(firstName);
final int maxTrials = 5;
// if not valid loop for max trials times
for (int i = 0; i < maxTrials || valid; i++) {
firstName = enterFirstName();
valid = confirmFirstName(firstName);
}
if (valid) {
setMonthlyRates(firstName);
}
}
private void setMonthlyRates(String firstName) {
monthlyRates.setFirstName(firstName);
}
ありがとうございます。私はこれらを試して、私が得た出力を見ます:)もう一度感謝します –
例外を使用しないでください。 do-whileを使用してください。 –
私は '!" N ".equals(sYesNo)||を信じています。 ! "" Y ".equals(sYesNo)'は常に真です。あなたの入力は常に「N」でもなく「Y」でもないからです。 – QBrute
例外を使ってこのような入力を検証するのは、 https://stackoverflow.com/a/7304405/802482 – Black