第一行是某天前来挂号就诊的病人数 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]);
}
}
}
执行结果:
编辑不易, 若符合, 望采纳
整行读取啊,第一行数据另存,其它行数据根据空格split成数组
package com.java3.Test;
import java.util.Scanner;
public class Input {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String amount = scan.nextLine();
int n = Integer.parseInt(amount);
for(int i = 0;i < n;i++){
String tempStr = scan.nextLine();
System.out.println(tempStr);
}
}
}
输入信息在控制台之后,还需要继续输入,程序没有结束
代码思路:
Demo:
import lombok.Data;
import java.util.Arrays;
import java.util.Scanner;
public class Input {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入行数n:");
int n = scan.nextInt();
System.out.println("n = " + n);
Patient[] patients = new Patient[n];
Patient patient;
for (int i = 0; i < n; i++) {
System.out.println("请逐行输入病人信息, 第 " + (i + 1) + "/" + n + " 行");
patient = new Patient(new Scanner(System.in).nextLine().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]);
}
}
}
运行结果:
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632