本人在做开发的过程中,使用了数组,但赋值后的结果确跟我想象的并不一样,请哪位大虾帮忙解释一下!以下是我的测试程序:public class StringArrayTest {
  public StringArrayTest() {
  }
  public void testStringArray() {
    String[] sa=null;
    int[] ia=null;
    for (int i=0;i<3;i++) {
      sa=new String[3];
      ia=new int[3];
      sa[i]=String.valueOf(i);
      ia[i]=i;
      System.out.println("sa["+i+"]="+sa[i]);
      System.out.println("ia["+i+"]="+ia[i]);
    }
    System.out.println("---------------------"+String.valueOf(0));
    for (int i=0;i<sa.length;i++) {
      System.out.println("sa["+i+"]="+sa[i]);
      System.out.println("ia["+i+"]="+ia[i]);
    }
  }
  public static void main(String[] args) {
    StringArrayTest stringArrayTest1 = new StringArrayTest();
    stringArrayTest1.testStringArray();
  }}----------------------------
我这里输出的竟然是如下结果:
sa[0]=0ia[0]=0sa[1]=1ia[1]=1sa[2]=2ia[2]=2---------------------0sa[0]=nullia[0]=0sa[1]=nullia[1]=0sa[2]=2ia[2]=2

解决方案 »

  1.   

    sa=new String[3];
          ia=new int[3];
    这个是不是应该放在循环的外边?
      

  2.   

    sa=new String[3];
    ia=new int[3];
    放在循环里面了。最后一次循环,他各自新建3个长度的数组。sa  [null][null][null]
    但因为你赋了一次值,所以变为[null][null][2]而
    ia [0][0][0](整形数组初始值为0)赋值以后为[0][0][2]
      

  3.   

    public class StringArrayTest {
    public StringArrayTest() { }
      public void testStringArray() {
        String[] sa=new String[3];
        int[] ia=new int[3];
        for (int i=0;i<3;i++) {
        
    //sa=new String[3];
    sa[i]=String.valueOf(i);
      
    //ia=new int[3];
           ia[i]=i;
          System.out.println("sa["+i+"]="+sa[i]);
          System.out.println("ia["+i+"]="+ia[i]);
        }
        System.out.println("---------------------"+String.valueOf(0));
        for (int i=0;i<sa.length;i++) {
          System.out.println("sa["+i+"]="+sa[i]);
          System.out.println("ia["+i+"]="+ia[i]);
        }
      }
      public static void main(String[] args) {
        StringArrayTest stringArrayTest1 = new StringArrayTest();
        stringArrayTest1.testStringArray();
      }
    }
      

  4.   

    在循环之前不知道长度就用ArrayList 好了,在转换成数组
      

  5.   

    楼主这个问题真是莫名其妙
    不知道数组的长度你的for循环次数(3)怎么确定的?还有你的数组到最后一重循环的时候sa=new String[3],你说此时sa的各个位置的值是多少?肯定是null,接下来只对sa[2]进行了赋值,剩下两个肯定是null