簡體   English   中英

為什么我無法檢索數組值?

[英]Why I can't retrieve array values?

我想打印存儲的數組值。但是當我這樣做時,它只打印空值。 我的代碼有什么問題。 當我檢查數組length()時。 打印長度。 但是,當我嘗試檢索值時,它僅提供空值。

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

}


}
 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++;
}

您必須在循環中增加計數器變量i

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

您只為數組的第一個元素設置值。

    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++]);
    }

問題是您不增加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的長度。

就像已經說過的那樣,您只是忘記了在while循環的每次迭代中增加i的值,因此數組值remian null-沒有分配任何值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM