我的要求是在多行上接受用户的多次输入。
每行表示输入的含义为:Power Energy Idea Strength
,每个输入之间仅用一个空格隔开。
输入:
2 4 5 7
3 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
中的单独类别。
答案 0 :(得分:2)
您可以简单地将行拆分并将值放在单独的列表中
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";
}
关于如何在System.in中使用Java 8流API,请检查How to build a Java 8 stream from System.in / System.console()?
答案 1 :(得分:0)
U可以使用此程序输入任意数量的值:
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]));
}
}