Java 无法将.txt文件中的字符串插入字符串插入数组
这应该很容易。当我编写此代码时,我100%确信它会工作。我想创建一个包含data.txt数据的二维字符串数组(data[][]),以及一个包含data.txt第一行的列描述的一维数组(kolom[])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
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文件位于同一文件夹中李>
- 尝试将增强循环更改为正常循环,但仍然失败李>
- 这台计算机上的扫描仪执行是否有问题
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循环。