我正在尝试创建一个父ArrayList,它包含每个索引的子ArrayList。我的代码涉及使用扫描仪输入填充子列表。请参阅下面的输入示例。
输入描述:第一个输入的整数(int T
)告诉我们要生成多少个子ArrayLists,这也可以看作是父ArrayList的大小或者输入了多少行输入跟随。此后的所有行都是我们想要存储在每个子arraylist中的整数。
示例输入
2
5 4 2 9
1 3 3 7
预期产出
SubString 0 contains 5 4 2 9
SubString 1 contains 1 3 3 7
问题描述:我在以下行parentList.add(i, subList.add(q.nextInt()));
上收到错误消息。我相信我不遵循语法。我尝试过使用.addAll,但这也不起作用。谁能告诉我我做错了什么?提前感谢您的帮助。
import java.util.*;
import java.io.*;
public class Serials {
public static void main(String[] args) {
int T = 0; //First Integer to be inputed
//tells me how many sub ArrayLists I will have
List<List<Integer>> parentList =new ArrayList(); //parentList
List<Integer> subList = new ArrayList(); //subList
Scanner q=new Scanner(System.in);
System.out.println("How many substrings do we need");
T = q.nextInt(); //Scanning in T Value
for(int i=0; i<T; i++) {
subList = new ArrayList<Integer>();
subList.add(q.nextInt());
parentList.add(i, subList);
}
System.out.println( "SubString 0 contains" + parentList.get(0));
System.out.println( "SubString 1 contains" + parentList.get(1));
}
}
答案 0 :(得分:0)
java.util.List boolean add(E e)。 add
方法返回boolean
,而不是列表,因此您无法添加它。你这样做:
parentList.add(i, true/false)
parentList
的类型为List<List<Integer>>
。您只能添加List<Integer>
类型的项目。例如(至少让它编译)你可以这样做:
subList.add(q.nextInt());
parentList.add(i, subList);
答案 1 :(得分:0)
如前所述,添加列表不会返回列表,而是返回布尔值。
最好先修改内部数组列表,然后在完成所有条目的添加后再添加它。
像这样:
List<Integer> subList;
for(int i=0; i < T; i++) {
subList = new ArrayList<Integer>();
//logic for adding things to subList
parentList.add(i, subList);
}
答案 2 :(得分:0)
首先,不要在声明时初始化你的subList,因为你再次在for循环中初始化它。因此,永远不会使用new ArrayList()
对象。
对于你的问题,为什么你在循环中做q.nextInt()一次。这意味着您不希望每个子列表有多个数字。
正如其他人所提到的,你不能像你一样将子列表添加到parentList。
我还将分隔符更改为,而不是空格。
我已经修改了代码,记住这些事情。
import java.util.*;
public class Serials {
public static void main(String[] args) {
int T = 0; //First Integer to be inputed
//tells me how many sub ArrayLists I will have
List<List<Integer>> parentList =new ArrayList(); //parentList
List<Integer> subList = null; //subList
String[] strArr = null;
Scanner q=new Scanner(System.in);
System.out.println("How many substrings do we need");
T = q.nextInt(); //Scanning in T Value
for(int i=0; i<T; i++) {
System.out.println("Enter comma seperated integer values for list "+(i+1));
strArr = q.next().split(",");
subList = new ArrayList<>();
for(String str : strArr){
try{
subList.add(Integer.parseInt(str));
}catch(NumberFormatException e){
System.out.println("Are you share that was an integer?");
System.exit(0);
}
}
parentList.add(i, subList);
}
parentList.add(i, subList);
}
System.out.println( "SubString 0 contains" + parentList.get(0));
System.out.println( "SubString 1 contains" + parentList.get(1));
}
}
答案 3 :(得分:0)
import java.util.*;
import java.io.*;
public class Serials {
public static void main(String[] args) {
int T = 0; //First Integer to be inputed
//tells me how many sub ArrayLists I will have
List<List<Integer>> parentList =new ArrayList(); //parentList
List<Integer> subList = new ArrayList(); //subList
Scanner q=new Scanner(System.in);
System.out.println("How many substrings do we need");
T = Integer.parseInt(q.nextLine()); //Scanning in T Value
for(int i=0; i<T; i++) {
String x = q.nextLine();
String[] arr= x.split(" ");
subList = new ArrayList<Integer>();
for(int j=0;j<arr.length;j++)
{
subList.add(Integer.parseInt(arr[j]));
}
parentList.add(i, subList);
}
System.out.println( "SubString 0 contains" + parentList.get(0));
System.out.println( "SubString 1 contains" + parentList.get(1));
}
}
这将允许输入和输出以您想要的确切格式。希望它有所帮助:)