我有一个“约会”课程如下
Appointment app = new Appointment();
app.inputAppointment();
在我的主要方法中我有
public static String getString() {
return scan.nextLine();
}
public static int getInt() {
return scan.nextInt();
}
public static int getInt(int min, int max) {
int input = getInt();
if (input >= min && input <= max) {
return input;
} else {
System.out.println("Invalid input. Re-enter...");
return getInt(min, max);
}
}
但我只能输入第一个字符串和后面的3个整数。 setMessage(UserInput.getString());从不执行。 发送到inputAppointment()中的set方法的参数从“UserInput”类调用方法,该类处理输入如下
it "transforming something does something" do
base_data = { k1: 1, k2: 2 }
transformed_data = base_data.each_with_object({}) { |(k, v), t|
t[k] = f(v)
}
expect(transformed_data).to eq(
k1: 2,
k2: 4,
)
end
答案 0 :(得分:0)
每当用户将文本输入控制台并按Enter键时,用户的输入加上行尾字符&#39; \ r \ n&#39;被添加到输入缓冲区。
scan.nextLine()
读到下一个&#39; \ r \ n&#39;字符并返回它找到的内容。
scan.nextInt()
将提前读取,直到它在下一个int中扫描,但它不会消耗&#39; \ r \ n&#39;从用户按Enter键。在第3次通话后,仍有一个&#39; \ r \ n&#39;在输入缓冲区上,您对scan.nextLine()
的下一次调用假定这是用户的下一行输入。
如果您希望用户在单独的行中输入整数,则需要额外调用scan.nextLine()
来使用行尾字符。
即
public static int getInt() {
int input = scan.nextInt();
scan.nextLine();
return input;
}