这应该很容易。当我编码这个时,我就100%确定它会起作用。我想创建一个2维数组的字符串(data [] [])包含data.txt的数据,还有一个1维数组(kolom [])包含列描述,它是data.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);
}
}
此程序输出所有空值。这意味着Strings没有插入阵列。 造成这个问题的原因是什么?
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'是我的母语
的列#39;答案 0 :(得分:2)
你误解了每个循环
此处和下一个循环
for(String element : kolom)
element = readText.next();
element
确实具有kolom[1],kolom[0] etc
的相同内存位置,因此如果更改element
的值,则不表示您在特定索引处更改数组。因此,数组未初始化为您提供空。
相反,您可以使用while循环
while(readText.hasNext()){
kolom[i++]=scanner.nextLine(); //and so on for other array
}
答案 1 :(得分:1)
看看这个:
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