我想打印存储的数组值。但是当我这样做时,它只打印空值。我的代码出了什么问题。当我检查数组长度()。它打印长度。但是当我尝试检索值时,它只给出空值。
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();
}
}
答案 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>