为什么我无法检索数组值?

时间:2013-04-29 14:13:35

标签: java arrays string null

我想打印存储的数组值。但是当我这样做时,它只打印空值。我的代码出了什么问题。当我检查数组长度()。它打印长度。但是当我尝试检索值时,它只给出空值。

 public class StoreVal
{
static String[] values1=new String[100];
    static String[] kmvalues1=new String[200];

public static void setvalues()
{
    try
    {
        @SuppressWarnings("resource")
        BufferedReader b1=new BufferedReader(new FileReader("d://values//kmeans0.txt"));
        @SuppressWarnings("resource")
        BufferedReader b2=new BufferedReader(new FileReader("d://values//kmeans1.txt"));
        @SuppressWarnings("resource")
        BufferedReader b3=new BufferedReader(new FileReader("d://values//kmeans2.txt"));
        @SuppressWarnings("resource")
        BufferedReader b4=new BufferedReader(new FileReader("d://values//kmeans3.txt"));



        String km1 = null;
        String km2 = null;
        String km3 = null;
        String km4 = null;





        while((km1=b1.readLine())!=null)
        {

            int i=0;
            values1[i]=km1;
            System.out.println(values1[i]);
        }
    }
    catch(Exception e)
    {

        e.printStackTrace();
    }
    values();
}



public static void values()
{


    for(int x=0;x<values1.length;x++)
    {
        System.out.println(values1[x]);  // this line prints only null
    }
}


public static void main(String[] args)
{

    setvalues();

}


}

5 个答案:

答案 0 :(得分:0)

 while((km1=b1.readLine())!=null)
    {

        int i=0;
        values1[i]=km1;
        System.out.println(values1[i]);
    }

让我觉得您只为values1[0]插入了值!

您需要在while循环上方设置int i=0并在循环内将其i++;递增。

int i=0;     
while((km1=b1.readLine())!=null)
{
     values1[i]=km1;
     System.out.println(values1[i]);
     i++;
}

答案 1 :(得分:0)

您必须在循环中递增计数器变量i

int i = 0;
while((km1 = b1.readLine()) != null) {
    values1[i] = km1;
    System.out.println(values1[i]);
    i++;
}

答案 2 :(得分:0)

您只是为数组的第一个元素设置值。

    while((km1=b1.readLine())!=null)
    {

        int i=0;
        values1[i]=km1;
        System.out.println(values1[i]);
    }

你需要这个:

int i = 0;
while((km1=b1.readLine())!=null)
    {

        values1[i]=km1;
        System.out.println(values1[i++]);
    }

答案 3 :(得分:0)

问题在于你没有增加 i 变量(另一个问题是 i 变量在循环内被初始化)。

代替while循环试试这个:

for(int i=0; i< values1.length;i++)
    {
        if((km1=b1.readLine())==null)break;
         values1[i]=km1;
         System.out.println(values1[i]);
}

注意:这样你永远不会超过values1 length。

答案 4 :(得分:0)

正如所说的那样,你只是忘记在i循环的每次迭代中增加while的值,因此数组值remian null - 没有赋值给它们。< / p>