天问ㄆ 2021-04-20 16:31 采纳率: 100%
浏览 59
已采纳

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的数组或者集合中?

  • 写回答

6条回答 默认 最新

  • 编程和音乐万一呢 2021-04-21 17:16
    关注

    由于是同时输入多行参数, 可以使用先收集、再解析的方式处理:

    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]);
            }
        }
    
    }

    执行结果:

    编辑不易, 若符合, 望采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?