0

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

 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();

}


}
4

5 回答 5

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 的长度。

于 2013-04-29T14:45:28.290 回答
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++]);
    }
于 2013-04-29T14:20:06.207 回答
0

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

int i = 0;
while((km1 = b1.readLine()) != null) {
    values1[i] = km1;
    System.out.println(values1[i]);
    i++;
}
于 2013-04-29T14:18:32.280 回答
0

正如已经说过的那样,您只是忘记在循环i的每次迭代中增加值while,因此数组值 remian null - 没有分配给它们。

于 2013-04-29T19:43:54.470 回答
0
 while((km1=b1.readLine())!=null)
    {

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

让我觉得你只为values1[0]!

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

int i=0;     
while((km1=b1.readLine())!=null)
{
     values1[i]=km1;
     System.out.println(values1[i]);
     i++;
}
于 2013-04-29T14:16:49.903 回答