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:
它不是在等我输入它想象的东西。我该如何解决呢?
很多。
答案 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()。