我正在尝试读取包含多个单词的字符串,即。洛杉矶或纽约市。对于“离开”和“到达”使用scanner.next()只读取第一个如果有两个单词并在变量之间拆分它们。 nextLine()也没有太大的运气。这是我的代码:
System.out.print("\nEnter flight number: ");
int flightNumber = Integer.valueOf(scanner.nextLine());
System.out.print("\nEnter departing city: ");
String departingCity = scanner.nextLine();
System.out.print("\nEnter arrival city: ");
String arrivalCity = scanner.nextLine();
我知道这很简单,但我还没弄清楚。
这是输入/输出w /上面的代码:
输入航班号:29
输入离开城市:(立即跳到下一行)
输入抵达城市:
----我真正想要的是什么----
输入航班号:29
进入离开城市:洛杉矶(能够在不跳过下一个输入的情况下输入多个单词)
进入抵达城市:堪萨斯城
答案 0 :(得分:6)
你的问题是next()没有读取回车符,它会被你的下一个next()或nextLine()自动读取。始终使用nextLine()并将输入转换为整数:
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
System.out.print("\nEnter flight number: ");
int flightNumber = Integer.valueOf(scanner.nextLine());
System.out.print("\nEnter departing city: ");
String departingCity = scanner.nextLine();
System.out.print("\nEnter arrival city: ");
String arrivalCity = scanner.nextLine();
}
答案 1 :(得分:0)
Integer.parseInt(scanner.nextLine())
也可以 - 它会返回一个int,而Integer.valueOf(scanner.nextLine())
会返回一个Integer
。
作为@Edwin Dalorzo建议的替代方案,您可以调用nextInt()
从输入流中获取下一个标记try to convert it to an int。如果转换为int不成功,则此方法将抛出InputMismatchException
。否则,它将仅获取输入的int值。调用nextLine()
,然后将获取在int之后的行中输入的任何其他内容。此外,当用户按下“输入”提交输入时,nextLine()
将消耗添加的换行符(它将超过它并将其丢弃)。
如果您想确保用户在按“Enter”之前没有输入除之外的任何内容,请先调用nextInt()
,然后确保{{1}的值}} 是空的。如果你不关心int之后在行中输入的任何内容,你可以忽略nextLine()
返回的内容,但是仍然应该调用该方法来使用换行符。
在StackOverflow中搜索“java scanner next”或“java scanner nextLine”以查找有关此主题的主题。