如何执行此未执行的代码行?

时间:2016-03-07 19:45:06

标签: java object methods

我有一个“约会”课程如下

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

1 个答案:

答案 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;
}