动态地向字符串数组添加值,在显示数组时显示空值

时间:2015-08-17 16:25:27

标签: java arrays string

我正在尝试在String数组中插入字符串值,并在添加这些值后,我想对它们进行排序。但问题是在我循环遍历数组时将所有值插入字符串数组后,我得到null值作为输出!!!

中插入值
String string;
int number, index = 0;
string = br.readLine();
number = Integer.parseInt(br.readLine());
String[] temp = new String[string.length()*number];

for(int i=0; i<=string.length()-number; i++)
{    
    temp[index] = string.substring(i, i+number);
    System.out.println(temp[index]);
    index++;
}

排序值

System.out.println("\nBefore sorting");

for(int i=0; i<index; i++)        
    System.out.print(temp[index]+" ");

for(int i=index-1; i>0; i--)
    for(int j=0; j<i; j++)
        if(temp[j].compareTo(temp[j+1]) < 0)
        {
            String swap = temp[j];
            temp[j] = temp[j+1];
            temp[j+1] = swap;
        }

System.out.println("\nAfter sorting");
for(int i=0; i<index; i++)        
    System.out.print(temp[index]+" ");

我得到的输出是

  

aakash   3
  AAK
  又名
  KAS
  灰   在分拣之前   null null null null
  分拣后   null null null null

我无法理解这个空值来自哪里!理想情况下,我的数组的内容应该是temp [aak aka kas ash],但它的结果是temp [null null null null]

请帮我指出我在这段代码中犯的错误。

3 个答案:

答案 0 :(得分:1)

一切正常,你遇到的问题是,你没有正确打印字符串数组。 你的代码:

for(int i=0; i<index; i++)        
    System.out.print(temp[index]+" ");

应该是:

for(int i=0; i<index; i++)        
   System.out.print(temp[i]+" ");

答案 1 :(得分:0)

仔细检查您的代码。

    for(int i=0; i<index; i++)        
       System.out.print(temp[index]+" ");

如果你仍然无法弄清楚,只需打印索引变量的值 执行你的for循环。

答案 2 :(得分:0)

您使用的是index而不是i。结果该计划正在运作 但是当索引为4时你显示arra[index]并且你在数组中只有3个元素。

请更改

System.out.println("\nBefore sorting");
for(int i=0; i<index; i++)        
    System.out.print(temp[index]+" ");

System.out.println("\nBefore sorting");
for(int i=0; i<index; i++)        
    System.out.print(temp[i]+" ");