【发布时间】:2015-05-18 02:15:44
【问题描述】:
我无法使用扫描仪更新对象的变量名称。我向用户提供一个菜单,用户选择他的选择(更新名称),程序要求用户输入新名称,扫描仪读取 system.In 并更新变量的名称。唯一的问题是程序无法读取带有空格的字符串。例如
while(i ==1 ) {
System.out.printf("\n%s Properties Menu\n---------------\n1.Update Name\n2.Update Registration\n3.Update Transponder\n4.Update Capacity\n5.Update Length\n6.Update Beam\n7.Update Draft\n8.Update Longitude and Latitude\n9.Update Cargo\n10.Display the Ship\n11.Previous Menu\n",shipArrayList.get(decision).getShipName());
shipProperties = myScanner.nextInt(); // error line 121 here
if(shipProperties == 1) {
System.out.print("\nEnter a new name :");
newString = myScanner.next(); // or nextLine():
shipArrayList.get(decision).setShipName(newString);
}
如果我输入类似tDog 的内容,则此方法有效,但如果我输入T dog,我将得到java.util.InputMismatchException,输出示例如下
Enter a new name :t dog
t Properties Menu
---------------
1.Update Name
2.Update Registration
3.Update Transponder
4.Update Capacity
5.Update Length
6.Update Beam
7.Update Draft
8.Update Longitude and Latitude
9.Update Cargo
10.Display the Ship
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
11.Previous Menu
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at main.Map.updateShip(Map.java:121)
at main.main.main(main.java:48)
Java Result: 1
所以我猜它只读取 t 并且当扫描仪扫描 shipProperty 值时,它会读取 dog 而不是等待输入。我读过有关nextLine() 的信息,但它跳过了整个用户输入部分,例如,用newString = myScanner.nextLine() 输出切换newString = myScanner.next()....
DarkGoat Properties Menu
---------------
1.Update Name
2.Update Registration
3.Update Transponder
4.Update Capacity
5.Update Length
6.Update Beam
7.Update Draft
8.Update Longitude and Latitude
9.Update Cargo
10.Display the Ship
11.Previous Menu
1 //i enter 1 to update name
Enter a new name : //skips name input and waits for property input
Properties Menu
---------------
1.Update Name
2.Update Registration
3.Update Transponder
4.Update Capacity
5.Update Length
6.Update Beam
7.Update Draft
8.Update Longitude and Latitude
9.Update Cargo
10.Display the Ship
11.Previous Menu
所以我的问题是如何让扫描仪接受带有空格的输入作为有效字符串。
【问题讨论】: