Java 8 尝试使用list.contain(…)时发生IndexOutOfBoundsException,不确定如何修复 publicstaticvoidmain(字符串[]args){ List stuff=new ArrayList(); List fc=new ArrayList(); List on=new ArrayList(); 列表完成=新建ArrayList(); int d=0; int x=0; int r=0; //“输入”是一个包含用户所有输入的数组。 //您必须从“输入”中提取数据并将其存储在 //一种有效的数据类型 扫描仪输入=新扫描仪(系统输入); int输入_size=0; 输入尺寸=100; 字符串[]输入=新字符串[输入大小]; 对于(int i=0;i
,我认为数组上的Java 8 尝试使用list.contain(…)时发生IndexOutOfBoundsException,不确定如何修复 publicstaticvoidmain(字符串[]args){ List stuff=new ArrayList(); List fc=new ArrayList(); List on=new ArrayList(); 列表完成=新建ArrayList(); int d=0; int x=0; int r=0; //“输入”是一个包含用户所有输入的数组。 //您必须从“输入”中提取数据并将其存储在 //一种有效的数据类型 扫描仪输入=新扫描仪(系统输入); int输入_size=0; 输入尺寸=100; 字符串[]输入=新字符串[输入大小]; 对于(int i=0;i,java-8,indexoutofboundsexception,Java 8,Indexoutofboundsexception,,我认为数组上的为空。 看: public static void main(String[] args) { List<String> stuff = new ArrayList<String>(); List<String> fc = new ArrayList<String>(); List<String> on = new ArrayList<String>(); List<
为空。
看:
public static void main(String[] args) {
List<String> stuff = new ArrayList<String>();
List<String> fc = new ArrayList<String>();
List<String> on = new ArrayList<String>();
List<String> done = new ArrayList<String>();
int d=0;
int x=0;
int r=0;
//"inputs" is an array with all the inputs from the user.
//You will have to go through and extract the data from "inputs" and store it in
//a data type that works
Scanner in = new Scanner(System.in);
int inputs_size = 0;
inputs_size = 100;
String[] inputs = new String[inputs_size];
for(int i = 0; i < inputs_size; i++) {
String inputs_item;
try {
inputs_item = in.nextLine();
} catch (Exception e) {
inputs_item = null;
}
inputs[i] = inputs_item;
}
for(int n=0; n<inputs.length-1; n++){
if(inputs[n]==null){
break;
}
stuff.add(inputs[n]);
}
while(d<stuff.size()){
if(stuff.get(d).equals("0")){
x++;
}
d++;
}
for(int t=0; t<stuff.size(); t++){
if(stuff.get(t).equals("0")){
break;
}
fc.add(stuff.get(t));
}
r=fc.size();
while(r<stuff.size()-1){
if(stuff.get(r).equals("0")){
r++;
x=x-1;
}
if(x==4 && stuff.get(r)!="0"){
on.add(stuff.get(r));
}
if(x==3 && stuff.get(r)!="0"){
tw.add(stuff.get(r));
}
if(x==2 && stuff.get(r)!="0"){
th.add(stuff.get(r));
}
if(x==1 && stuff.get(r)!="0"){
fo.add(stuff.get(r));
}
if(x==0 && stuff.get(r)!="0"){
fi.add(stuff.get(r));
}
if(x==-1 && stuff.get(r)!="0"){
si.add(stuff.get(r));
}
r++;
}
int z=0;
int counter = 1;
for(; counter < fc.size(); counter++) {
if(counter>fc.size()){
break;
}
**if(fc.contains(on.get(counter)))** {
z=0;
}
else{
z=1;
break;
}
}
if(z==0){
done.add(on.get(0));
}
counter=1;
z=0;
System.out.println(done);
}
}
这是您唯一一次尝试在
上向您的添加内容。您的fc
和内容
大小将是相同的,因为您没有使其不同的内容(而不是此.equals(“0”)
,但如果您输入任何其他内容,它将是相同的)。之后,我们有:
if(x==4 && stuff.get(r)!="0"){
on.add(stuff.get(r));
}
r=fc.size();
虽然(Ry)您的计数器从1变为fc.size()
。为什么您希望上的(即另一个集合)至少有与fc
一样多的元素?另一方面,我不确定您是否真的理解您所写的内容。您是否将中断误认为继续,并且您是否意识到用于(int n=0;n
r=fc.size();
while(r<stuff.size()-1){