为了账号安全,请及时绑定邮箱和手机立即绑定

在每行中使用多个输入的多行

在每行中使用多个输入的多行

Qyouu 2023-06-04 16:53:43
我的要求是在多行上从用户那里获取多个输入。每行表示输入的含义为:Power Energy Idea Strength每行仅由一个空格分隔。输入:2 4 5 73 4 8 1 4 2 3 6输出包括列表:List<Integer> power = {2,3,4}List<Integer> energy = {4,4,2}List<Integer> idea = {5,8,3}List<Integer> strength = {7,1,6}首选解决方案是 Java,但如果可以提供 Java-8 解决方案,我会喜欢的。到目前为止,我已经尝试过但没有运气:        String input = "";        Scanner keyboard = new Scanner(System.in);        String line;        while (keyboard.hasNextLine()) {            line = keyboard.nextLine();            if (line.isEmpty()) {                break;            }            input += line + "\n";        }        System.out.println(input);我能够读取多行输入,但无法将它们作为单独的类别保存在List.
查看完整描述

2 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

您可以简单地拆分行并将值放在单独的列表中:


    line = keyboard.nextLine();

    if (line.isEmpty()) {

        break;

    }

    String arr[] = line.split(" ");// spiting the line based on space

    if (arr.length==4) { // check if length is 4 as you are expecting

    // use Integer.valueOf() to convert from string to Integer

        power.add(arr[0]);

        energy.add(arr[1]);

        idea.add(arr[2]);

        strength.add(arr[3]);

    }else {

        //throw exception or break

    }

    input += line + "\n";

}

查看完整回答
反对 回复 2023-06-04
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

您可以使用此程序输入任意多的值:


List<Integer> power = new ArrayList<>();

List<Integer> energy = new ArrayList<>();

List<Integer> idea = new ArrayList<>();

List<Integer> strength = new ArrayList<>();


Scanner sc = new Scanner(System.in);

while(true) {

  String s = sc.nextLine();

  if(s.equals("exit")) break;

  String args = s.split(" ");

  if(args.length >= 4) {

    power.add(Integer.valueOf(args[0]));

    energy.add(Integer.valueOf(args[1]));

    idea.add(Integer.valueOf(args[2]));

    strength.add(Integer.valueOf(args[3]));

  }

}


查看完整回答
反对 回复 2023-06-04
  • 2 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信