だから私はここにいくつかのコードを持っています:
import java.util.*;
public class tester
{
public static void main(String args[])
{
Scanner kb = new Scanner(System.in);
String b;
System.out.println("Choose a number 1-10.");
int a = kb.nextInt();
a = a * 2;
a = a + 5;
a = a * 50;
System.out.println("Enter the year you were born in.");
int c = kb.nextInt();
System.out.println("Did you already have your birthday this year?");
b = kb.nextLine();
if (b.equals("yes"))
{
a = a + 1764;
}
else
{
a = a + 1763;
}
a = a - c;
System.out.println(a);
kb.close();
}
}
ここに出力があります:
Choose a number 1-10.
5
Enter the year you were born in.
2014
Did you already have your birthday this year?
499
(文字列)bが完全に無視されているように私には思えます。誰かが私が間違っていることを説明できますか?
これscanner.nextInt()
は、がユーザーが入力した入力の改行文字を消費しないためです。残された改行文字を消費するkb.nextLine()
ためscanner.nextInt()
だけに、後で呼び出す必要があります。
int c = kb.nextInt();
System.out.println("Did you already have your birthday this year?");
kb.nextLine(); //consumes new line character left by the last scanner.nextInt() call
b = kb.nextLine();
またはすべてのあなたの置き換えkb.nextInt();
のためにInteger.parseInt(kb.nextLine());
Scanner kb = new Scanner(System.in);
String b;
System.out.println("Choose a number 1-10.");
int a = 0;
try {
a = Integer.parseInt(kb.nextLine());
} catch (NumberFormatException numberFormatException) {
a=0;
}
a = a * 2;
a = a + 5;
a = a * 50;
System.out.println("Enter the year you were born in.");
int c = 0;
try {
c = Integer.parseInt(kb.nextLine()); //consumes the new line character
} catch (NumberFormatException numberFormatException) {
c=0;
}
System.out.println("Did you already have your birthday this year?");
b = kb.nextLine();
if (b.equals("yes")) {
a = a + 1764;
} else {
a = a + 1763;
}
a = a - c;
System.out.println(a);
kb.close();
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加