Java 无法将.txt文件中的字符串插入字符串插入数组

Java 无法将.txt文件中的字符串插入字符串插入数组,java,foreach,java.util.scanner,Java,Foreach,Java.util.scanner,这应该很容易。当我编写此代码时,我100%确信它会工作。我想创建一个包含data.txt数据的二维字符串数组(data[][]),以及一个包含data.txt第一行的列描述的一维数组(kolom[]) import java.util.*; import java.io.*; public class Data { private String[][] data; private String[] kolom; public Data() throws FileNotFoundExcep

这应该很容易。当我编写此代码时,我100%确信它会工作。我想创建一个包含data.txt数据的二维字符串数组(data[][]),以及一个包含data.txt第一行的列描述的一维数组(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("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;consectetuer.adipiscing@volutpatornarefacilisis.org;Cook Islands
Melodie;15/12/23;Donec@malesuada.co.uk;Gibraltar
Salvador;15/07/01;purus@bibendum.edu;Lesotho
Garth;14/02/02;pede.Nunc.sed@faucibusid.org;Namibia

ps:“kolom”是“column”,在我的母语中

您误解了for each循环

在这里和下一个循环中

for(String element : kolom) 
            element = readText.next();
element
的内存位置与
kolom[1]和kolom[0]等的内存位置相同,因此,如果更改
element
的值,并不意味着更改特定索引处的数组。因此,数组不会初始化为null

相反,您可以使用while循环

while(readText.hasNext()){

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

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

您的代码的问题是您没有在
kolom
data

中填充数据。您不认为在缓冲区上迭代很奇怪吗?您应该尝试在扫描仪上使用
hasNext()
和while循环。