2017-04-19 72 views
0

希望大家都有美好的一天。数组不存储值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); 
    } 

目标是保存这些值以保存一些代码并稍后进行比较。

我很欣赏你的时间,

祺(对不起我的英文不好)。

+4

你应该包括你在你的问题控制台(异常)的错误。请参阅[什么是堆栈跟踪,以及如何使用它来调试我的应用程序错误?](http://stackoverflow.com/questions/3988788/what-is-a-stack-trace-and-how-can-我使用它来调试我的应用程序错误) –

+0

'int [] j = new int [i];'这会创建一个全新的数组,因此,您正在写入以前的值。 – 2017-04-19 18:01:39

+0

我建议阅读一下:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html – 2017-04-19 18:02:44

回答

1

我假设你得到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++) { 
... 
+0

这就是为什么我使j,k,l和m,j保存所有的值,当我在增加时产生他们的随机数。 –

+0

例如,j保存A中的所有值,直到我进入第六次迭代。 k是保存所有的值,直到我到第六次迭代等 –

+0

@RodrigoRSMahecha我已经根据您的意见解决了我的答案。 – radoh

0

在你的代码它创建阵列连连对象,而您的数组大小长大,所以使用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); 
    }