数组不存储值JAVA
希望大家都有美好的一天。数组不存储值JAVA
我的代码有问题,我试图将一些值保存到数组中,数组的位置被计数器移动,但是当我尝试保存值时,它在控制台上显示错误。
这是代码。
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);
}
目标是保存这些值以保存一些代码并稍后进行比较。
我很欣赏你的时间,
祺(对不起我的英文不好)。
我假设你得到ArrayOutOfBounds异常?
假设i
的值是1
。然后,要创建大小为1的阵列,但访问它的第二个元素,在这里:
int[] j = new int[i];
...
j[i]=(int) A;
您需要定义数组循环/循环/为/,同时用正确数量的元素的。例如:
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++) {
...
这就是为什么我使j,k,l和m,j保存所有的值,当我在增加时产生他们的随机数。 –
例如,j保存A中的所有值,直到我进入第六次迭代。 k是保存所有的值,直到我到第六次迭代等 –
@RodrigoRSMahecha我已经根据您的意见解决了我的答案。 – radoh
在你的代码它创建阵列连连对象,而您的数组大小长大,所以使用ARRAYLIST它可以让你生成它的大小。你必须使用arrayListName.add(index,value)
insted的的arrayName[index] = value
增加值到数组列表并获取你必须使用arayListName.get(index)
值insted的使用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);
}
你应该包括你在你的问题控制台(异常)的错误。请参阅[什么是堆栈跟踪,以及如何使用它来调试我的应用程序错误?](http://stackoverflow.com/questions/3988788/what-is-a-stack-trace-and-how-can-我使用它来调试我的应用程序错误) –
'int [] j = new int [i];'这会创建一个全新的数组,因此,您正在写入以前的值。 – 2017-04-19 18:01:39
我建议阅读一下:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html – 2017-04-19 18:02:44