2015-05-09 77 views
1

这应该是非常简单的。当我编写代码时,我非常确定它会工作。我想创建一个2维数组的字符串(data [] [])包含data.txt的数据,并且1维数组(kolom [])包含第一行data.txt的列描述。从.txt文件到字符串插入数组的字符串失败

import java.util.*; 
import java.io.*; 
public class Data { 
private String[][] data; 
private String[] kolom; 
    public Data() throws FileNotFoundException { 
     data = new String[300][4]; 
     kolom = new String[4]; 
     Scanner readLine = new Scanner(new File("data.txt")); 
     Scanner readText = new Scanner(readLine.nextLine()).useDelimiter(";"); 

     for(String element : kolom) 
      element = readText.next(); 

     for(String[] row : data) { 
      readText = new Scanner(readLine.nextLine()).useDelimiter(";"); 
      for(String element : row){ 
       element = readText.next(); 
      } 
     } 
    } 
    public String[] getKolom() { 
     return kolom; 
    } 
    public String[][] getData() { 
     return data; 
    } 
    public static void main (String[] args) throws FileNotFoundException { 
     Data data = new Data(); 
     for(String element : data.getKolom()) 
      System.out.print(element); 
     for(String[] row : data.getData()) 
      for(String element : row) 
       System.out.print(element); 
    } 
} 

该程序输出全部空值。这意味着字符串没有插入到数组中。 导致此问题的原因是什么?

  • data.txt下面的代码片段(几行301行)。
  • data.txt与Data.class文件位于同一个文件夹中。
  • 试图将增强型环路更改为正常环路仍然是同样的故障。
  • 这个扫描仪的实现有问题吗?

的data.txt

Nama;Tanggal;Email;Negara 
Kamal;16/04/15;[email protected];Cook Islands 
Melodie;15/12/23;[email protected];Gibraltar 
Salvador;15/07/01;[email protected];Lesotho 
Garth;14/02/02;[email protected];Namibia 

PS: 'kolom' 是 '列',在我的母语

+1

你不觉得迭代缓冲区很奇怪,您应该尝试在扫描程序和while循环中使用'hasNext()'。 – 2015-05-09 06:47:06

回答

2

你误会了每个循环

这里,并在下一循环

for(String element : kolom) 
      element = readText.next(); 

element do es有相同的内存位置kolom[1],kolom[0] etc所以如果你改变element的值,这并不意味着你改变了数组在特定的索引。所以数组并没有初始化给你null。

相反,你可以使用while循环

while(readText.hasNext()){ 

    kolom[i++]=scanner.nextLine(); //and so on for other array 
} 
1

看看这个:

kolom
import java.util.*; 
import java.io.*; 
public class Data { 
private String[][] data; 
private String[] kolom; 
    public Data() throws FileNotFoundException { 
     data = new String[300][4]; 
     kolom = new String[4]; 

     Scanner readLine = new Scanner(new File("E:/Data.txt")); 
     Scanner readText = new Scanner(readLine.nextLine()).useDelimiter(";"); 

     int lineNumber = 0; 
     while(readLine.hasNextLine()){ 
      String line = readLine.nextLine(); 
      kolom=line.split(";"); // filling data to kolom array 
      data[lineNumber]=kolom; // filling data to data array 
      lineNumber++; 
     }  


    } 
    public String[] getKolom() { 
     return kolom; 
    } 
    public String[][] getData() { 
     return data; 
    } 
    public static void main (String[] args) throws FileNotFoundException { 
     Data data = new Data(); 
     for(String element : data.getKolom()) 
      System.out.print(" "+element); 

     System.out.println("\n*******data*********"); 
     for(String[] row : data.getData()) { 
      for(String element : row) 
       System.out.print(" "+element); 
      System.out.println(); 
     } 
    } 
} 

问题与您的代码是你没有填写数据data