实例化两个文本文件中的两个数组

时间:2013-05-23 18:16:19

标签: java arrays bufferedreader

我试图用文件“cool.txt”中的项目实例化String数组,并且对于数组温暖相同,除了文本文件“warm.txt”之外,程序工作到一定程度但是很多元素的数组被标记为null,如enter image description here

这是部分正确的,因为它们的数组具有所有正确的项目;

之后只有数百万的null

这是我的代码

 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");
   }

} 

2 个答案:

答案 0 :(得分:2)

在Java中创建对象数组时,它们会初始化为默认值。对于整数,这是0.对于对象,例如String,这是一个空引用。当你的数组包含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类型的对象。

答案 1 :(得分:0)

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