如何在另一个类上运行方法之前让java等待我的输入

时间:2017-09-18 09:27:50

标签: java

public class House extends Device {

static final int ADD = 'a';
static final int SHOW = 's';
static final int ONOFF = 'o';
static final int QUIT = 'q';


public void main() {

    Scanner in = new Scanner(System.in);
    Device theDevice = new Device();
    while (true) {
        System.out.print("(a)dd, (s)how, (o)n/off, (q)uit: ");
        char input = in.next().toLowerCase().charAt(0);
        if (input == ADD) {
            System.out.print("Device name: ");
            String deviceName = in.nextLine();
            theDevice.addDevice(deviceName);
        }
    }
}
}

class Device {

List<String> deviceName = new ArrayList<String>();
List<Boolean> deviceStatus = new ArrayList<Boolean>();
List<Long> deviceOnTime = new ArrayList<Long>();

void addDevice(String deviceName) {
    this.deviceName.add(deviceName);
    this.deviceStatus.add(false);
    this.deviceOnTime.add(0L);
}
}

我把我的代码放在这里,执行时就像这样显示了

(a)dd,(s)如何,(o)n / off,(q)uit:a 设备名称:(a)dd,(s)如何,(o)n / off,(q)uit:

它不是在等我输入它想象的东西。我该如何解决呢?

很多。

2 个答案:

答案 0 :(得分:0)

您的main方法格式不正确:在Java中,必须声明一个main方法:

public static void main(String[] args) {
}

如果你改变它,它将起作用。

另一件事是-indeed-你应该使用

in.nextLine()

消耗换行符。

答案 1 :(得分:0)

当您调用in.next()时,它会使用下一个值忽略返回字符&#39; \ n&#39;。然后你调用in.nextLine()并获取已存在的行并跳过。要解决这个问题,请使用in.nextLine()而不是in.next()并修剪结果,或者以脏的方式连续两次调用in.nextLine()。