0

我正在尝试使用文件“cool.txt”中的项目来实例化 String 数组 cool 并且对于数组 warm 相同,除了文本文件“warm.txt”程序在一定程度上可以工作,但是数组的许多元素都被标记了像这样为空在此处输入图像描述

这是部分正确的,因为它们的数组包含所有正确的项目;数以百万计的空值之后

这是我的代码

 int count2=0;
   int count3=0;
   String[] filename ={"Cool.txt","Warm.txt"};
   String[] cool =new String[30];
   String[] warm =new String [3000];
   String[][] arrays = new String [][]{cool,warm};
   BufferedReader fr;



  try
  {
   for(int i=0; i<2; i++)
   {
   fr = new BufferedReader(new FileReader(filename[i]));
  String line = fr.readLine();

   while (line != null)
          {

                if (i<=0)
              {arrays[i][count2]=line;
              System.out.println("COOL");    
              count2++;}

      if(i>=1)
      {arrays[i][count3]=line;
      System.out.println("WARM");    
      count3++;}

      line = fr.readLine();

}
  fr.close();


    }

   System.out.println(Arrays.asList(warm));
   System.out.println(Arrays.asList(cool));
  }




          catch(Exception F){
       System.out.println("NUL");
   }

} 
4

2 回答 2

2

当您在 Java 中创建对象数组时,它们会被初始化为默认值。对于整数,这是 0。对于对象,例如字符串,这是一个空引用。由于您的数组包含 30000 个元素,因此它将包含文件中的元素(大约 5 个),其余元素不会被初始化(null)。

如果您希望使用具有可变大小的对象列表,您可以查找 ArrayLists 或其他类型的列表。如果要替换以下行:

String[] cool =new String[30];
String[] warm =new String [3000];

System.out.println(Arrays.asList(warm));
System.out.println(Arrays.asList(cool));

List<String> cool = new ArrayList<String>();
List<String> warm = new ArrayList<String>();

System.out.println(warm);
System.out.println(cool);

你会得到正确的结果。您已经以某种方式使用了列​​表:方法调用Arrays.asList将参数转换为 List 类型的对象。

于 2013-05-23T18:22:07.693 回答
0

在函数结束时,您最终将它们转换为list对象。如果您只使用 aList开头,则不会有“数百万”个空值。你得到空值的原因是你只能分配一次数组,所以所有的槽都默认为null.

于 2013-05-23T18:18:48.253 回答