java - 如何从java中的一行读取多个输入?
问题描述
所以我有这个代码:
for(int i=0;i<number;i++) {
System.out.println("WHAT HOUSEHOLD DO YOU WANT TO CONNECT IN APARTMENT NO."+(i+1));
System.out.println("1 ) OVEN");
System.out.println("2 ) TV");
System.out.println("3 ) VACCUUM CLEANER");
System.out.println("4 ) REFRIGERATOR");
int option = cin.nextInt();
switch(option) {
case 1: {
for(initiereAparate e : aparate)
fw.write((i+1)+" "+e.ob1.denumire+" "+e.ob1.material+" "+e.ob1.culoare+" "+e.ob1.origine+" "+e.ob1.consumEnergie+"\r\n"); break;
}
case 2: {
for(initiereAparate e : aparate)
fw.write((i+1)+" "+e.ob2.denumire+" "+e.ob2.material+" "+e.ob2.culoare+" "+e.ob2.origine+" "+e.ob2.consumEnergie+"\r\n"); break;
}
case 3: {
for(initiereAparate e : aparate)
fw.write((i+1)+" "+e.ob3.denumire+" "+e.ob3.material+" "+e.ob3.culoare+" "+e.ob3.origine+" "+e.ob3.consumEnergie+"\r\n"); break;
}
case 4: {
for(initiereAparate e : aparate)
fw.write((i+1)+" "+e.ob4.denumire+" "+e.ob4.material+" "+e.ob4.culoare+" "+e.ob4.origine+" "+e.ob4.consumEnergie+"\r\n"); break;
}
}
}
我想知道如何读取多个输入。例如,我将输入一行 1 2 4 ,这个数字将一次执行 3 个案例。在我已经拥有的代码中,我只能输入 1 个数字,它将执行只有一个案例陈述
解决方案
您需要更改输入函数以期望字符串而不是 int。然后只需将您的字符串拆分为数字并循环使用该数字来执行您的切换案例。
PS请注意,此代码未经测试,不要只是复制和粘贴它期望一切都能完美运行。尝试理解我所做的并将其应用到您自己的上下文中。
for (int i = 0; i < number; i++) {
System.out.println("WHAT HOUSEHOLD DO YOU WANT TO CONNECT IN APARTMENT NO." + (i + 1));
System.out.println("1 ) OVEN");
System.out.println("2 ) TV");
System.out.println("3 ) VACCUUM CLEANER");
System.out.println("4 ) REFRIGERATOR");
// we change this to nextLine() because we want a string.
String option = cin.nextLine();
// we split our string at white space, this give us an array of string;
String[] options = option.split("\\s+");
// we parse every options in the array
for (int j = 0; j < options.length; j++) {
// we need to cast the option back to an integer since, it's what we are
// comparing.
int currentOption = Integer.parseInt(options[j]);
switch (currentOption) {
case 1: {
for (initiereAparate e : aparate)
fw.write((i + 1) + " " + e.ob1.denumire + " " + e.ob1.material + " " + e.ob1.culoare + " "
+ e.ob1.origine + " " + e.ob1.consumEnergie + "\r\n");
break;
}
case 2: {
for (initiereAparate e : aparate)
fw.write((i + 1) + " " + e.ob2.denumire + " " + e.ob2.material + " " + e.ob2.culoare + " "
+ e.ob2.origine + " " + e.ob2.consumEnergie + "\r\n");
break;
}
case 3: {
for (initiereAparate e : aparate)
fw.write((i + 1) + " " + e.ob3.denumire + " " + e.ob3.material + " " + e.ob3.culoare + " "
+ e.ob3.origine + " " + e.ob3.consumEnergie + "\r\n");
break;
}
case 4: {
for (initiereAparate e : aparate)
fw.write((i + 1) + " " + e.ob4.denumire + " " + e.ob4.material + " " + e.ob4.culoare + " "
+ e.ob4.origine + " " + e.ob4.consumEnergie + "\r\n");
break;
}
}
}
}
正如Arvind Kumar Avinash
在评论中指出的那样,将关键字添加break
到您的 switch case 中很重要,这确保您每次迭代只处理一个 case。
推荐阅读
- amazon-sagemaker - sagemaker 上的多模型端点
- django - 在 Django 应用程序中实现聊天
- javascript - 尝试导入错误:“./components/headerComponent/header”不包含默认导出(导入为“标题”)
- python - Python 3.8.3 安装错误:python.exe - 系统错误
- angular - 复选框表单控件值为假但显示为真
- json - NIFI 流中的 Unicode 转义序列,用于将 JSON 转换为 XML
- javascript - 当画布全屏时,如何在 HTML5 画布上获取鼠标位置?
- excel - 在非常大的 word 文档中创建非常小的范围
- c# - Rotate multiple elements in Revit with C#
- elixir - 为什么 postgres 中的时区感知字段时区幼稚