第一行是某天前来挂号就诊的病人数 n。(1≤n≤200)
其后有 n 行,每行是病人的信息,包括三个信息:姓名(字符串,不含空格,最多 8 个字符)、体温(在 [36.0,40.0] 范围内)、是否咳嗽(1表示咳嗽,0表示不咳嗽)。每行三个信息之间以一个空格分开
5
Zhang 38.3 0
Li 37.5 1
Wang 37.1 1
Zhao 39.0 1
Liu 38.2 1
怎么使用Scanner将输入信息读入java的数组或者集合中?
第一行是某天前来挂号就诊的病人数 n。(1≤n≤200)
其后有 n 行,每行是病人的信息,包括三个信息:姓名(字符串,不含空格,最多 8 个字符)、体温(在 [36.0,40.0] 范围内)、是否咳嗽(1表示咳嗽,0表示不咳嗽)。每行三个信息之间以一个空格分开
5
Zhang 38.3 0
Li 37.5 1
Wang 37.1 1
Zhao 39.0 1
Liu 38.2 1
怎么使用Scanner将输入信息读入java的数组或者集合中?
由于是同时输入多行参数, 可以使用先收集、再解析的方式处理:
import lombok.Data;
import java.util.Arrays;
import java.util.Scanner;
public class Input {
public static void main(String[] args) {
//separator为行分隔符
String separator = System.getProperty("line.separator");
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
String line;
//直接在新行回车退出循环
while (true) {
line = sc.nextLine();
if (null == line || line.equals(""))
break;
sb.append(line);
sb.append(separator);
}
String[] input = sb.toString().split(separator);
int n = Integer.parseInt(input[0]);// 第一行是行数
Patient[] patients = new Patient[n];
Patient patient;
for (int i = 0; i < n; i++) {// 从第二行开始到结束, 每一行都是病人信息
patient = new Patient(input[i + 1].split(" "));
patients[i] = patient;
}
System.out.println("病人:" + Arrays.toString(patients));
}
}
@Data
class Patient {
private String name;
private Double temperature;
private Integer ifCough;
public Patient() {
}
public Patient(String[] line) {
if (null == line || 3 != line.length) {
this.name = "";
this.temperature = 0.0d;
this.ifCough = 0;
} else {
this.name = line[0];
this.temperature = Double.valueOf(line[1]);
this.ifCough = Integer.valueOf(line[2]);
}
}
}
执行结果:
编辑不易, 若符合, 望采纳