我的代码有问题,我试图将一些值保存到数组中,数组位置被计数器移动,但是当我尝试保存值时,它会在控制台上显示错误。
这是代码。
if(i<6){
i++;
jTxtEstrategia.setText(String.valueOf(i));
A = (Math.random() * 8);
B = (Math.random() * 8);
C = (Math.random() * 8);
D = (Math.random() * 8);
jTxtA.setText(""+(int)A);
jTxtB.setText(""+(int)B);
jTxtC.setText(""+(int)C);
jTxtD.setText(""+(int)D);
int[] j = new int[i];
int[] k = new int[i];
int[] l = new int[i];
int[] m = new int[i];
j[i]=(int) A;
k[i]=(int)B;
l[i]=(int)C;
m[i]=(int)D;
System.out.println("Estrategia "+i+"\n Sucursal A: "+j[i]+"\n Sucursal B: "+k[i]+"Sucursal C: "+l[i]+"\n Sucursal C: "+m[i]);
}else{
jButtCalc.setEnabled(false);
}
目标是保存这些值以保存一些代码并在以后进行比较。
感谢您的时间,
问候(抱歉我的英语不好)。
答案 0 :(得分:1)
我假设您收到ArrayOutOfBounds异常?
假设i
的值为1
。然后你创建一个大小为1的数组,但访问它的第二个元素,在这里:
int[] j = new int[i];
...
j[i]=(int) A;
您需要在循环/循环/ for / while之前使用正确数量的元素定义数组。 E.g:
int[] j = new int[N]; // where N is 6, or some other number?...
...
while (...) {
if(i<6){
i++;
...
但理想情况下,您应该以更常见的方式定义循环,例如:
for (int i = 0; i < 6; i++) {
...
答案 1 :(得分:0)
在您的代码中一次又一次地创建数组对象,并且您的数组大小增长,因此使用ARRAYLIST可以生成它的大小。您必须使用arrayListName.add(index,value)
arrayName[index] = value
的{{1}}来为数组列表添加值,并检索您必须使用arayListName.get(index)
使用arrayName[index]
ArrayList<Integer> j= new ArrayList<Integer>();
ArrayList<Integer> k= new ArrayList<Integer>();
ArrayList<Integer> l= new ArrayList<Integer>();
ArrayList<Integer> m= new ArrayList<Integer>();
if(i<6){
i++;
jTxtEstrategia.setText(String.valueOf(i));
A = (Math.random() * 8);
B = (Math.random() * 8);
C = (Math.random() * 8);
D = (Math.random() * 8);
jTxtA.setText(""+(int)A);
jTxtB.setText(""+(int)B);
jTxtC.setText(""+(int)C);
jTxtD.setText(""+(int)D);
j.add(i,(int)A);
k.add(i,(int)B);
l.add(i,(int)C);
m.add(i,(int)D);
System.out.println("Estrategia "+i+"\n Sucursal A: "+j.get(i)+"\n Sucursal B: "+k.get(i)+"Sucursal C: "+l.get(i)+"\n Sucursal C: "+m.get(i));
}else{
jButtCalc.setEnabled(false);
}