我想知道如何做到这一点。
我被告知使用kb.nextLine()
而不是kb.next()
,但这只会导致在运行程序时跳过输入。
String address;
student.setAddress(address = kb.nextLine());
然后告诉我这样做是为了解决它:
student.SetAddress(String address = kb.nextLine());
但是我收到一个错误:
String cannot be resolved into a variable" "Syntax error on token "address"
答案 0 :(得分:5)
你的第二个例子是错误的。你的第一个例子看起来没问题。但不是很好。我假设您一直在使用nextInt()
或nextDouble()
之类的内容。它们留下一个尾随的新行,所以你需要消耗它。
kb.nextLine(); // <-- consume empty trailing line.
String address;
student.setAddress(address = kb.nextLine()); //<-- reads line.
如果您不需要本地地址副本,
kb.nextLine(); // <-- consume empty trailing line.
student.setAddress(kb.nextLine()); //<-- reads line.
正如Scanner.nextLine()
Javadoc所说,
使此扫描程序超过当前行并返回跳过的输入。