我正在上课。由于某种原因,程序完全跳过了用户应该输入变量name
的部分。我无法理解为什么它会以这种方式运行,因为我的其余代码位于cardType
部分之后(要求String
和{int
之类的内容{1}}类型工作正常且有序。
System.out.println("Enter the card information for wallet #" +
(n+1) + ":\n---\n");
System.out.println("Enter your name:");
String name = scan.nextLine();
name = capitalOf(name);
System.out.println("Enter card type");
String cardType = scan.nextLine();
cardType = capitalOf(cardType);
答案 0 :(得分:1)
在尝试获取用户名之前,您可能需要使用读取的最后一行的结尾:
scan.nextLine(); // add this
System.out.println("Enter the card information for wallet #" +
(n+1) + ":\n---\n");
System.out.println("Enter your name:");
String name = scan.nextLine();
name = capitalOf(name);
System.out.println("Enter card type");
String cardType = scan.nextLine();
cardType = capitalOf(cardType);
答案 1 :(得分:1)
它的行为方式是因为我确信您使用相同的扫描仪对象扫描整数/双值,然后再使用它来扫描名称。
说完并不意味着你必须创建多个扫描仪对象。 (你永远不应该那样做。)
解决这个问题的一个简单方法是扫描字符串,即使你期望整数/双精度并将其强制转换。
Scanner scn = new Scanner(System.in);
int numbers = scn.nextInt(); //If you do this, and it skips the next input
scn.nextLine(); //do this to prevent skipping
//I prefer this way
int numbers = Integer.toString(scn.nextLine());
String str = scn.nextLine(); //No more problems