我的问题,我有一个如下所示的txt文件:
CA-ADAPT-BAT18AH;CABLE ADAPTATION POUR CHARGER BATTERIE 18Ah
OP-CBL-PX738;CABLE TM 220V BUL 738 4.5M
OP-PAN-CABLE-Y;CABLE Y POUR PIV MINI & MAXI (1 FEM - 2 MAL)
OP-PAN-DATA;Câble datacom
OP-TMSSA-DATA;Câble datacom
OP-SOL-CABLE-1;CABLE POUR PANNEAU SOLAIRE : BOITIER VERS PIV
每行有2条信息,以“;”
分隔在我的代码java中,我有一个像“String [] [] info = new String [25] [2];”
的var我只想读取整个文件,将第一行的第一个信息放在info [0] [0]中,将第一行的第二个信息放在info [0] [1]中。 并对文件的其余数据执行相同的过程。
所以这是我的代码:
public class Function {
public static String[][] getCable() throws FileNotFoundException {
String delim = ";";
String line = null;
String[][] info = new String[25][2];
String[] temp;
int i = 0,j = 0,a = 0,b = 0;
String filePath = "C:/Users/ogh/Desktop/Appli Java/cable.txt";
Scanner scanner = new Scanner(new File(filePath));
for (i = 0; i < 25; i++){
for (j = 0; j < 2; j++){
if (j == 0) info[i][j] = "ID : ";
if (j == 1) info[i][j] = "Descr. : ";
}
j = 0;
}
while (scanner.hasNextLine()) {
line = scanner.nextLine(); // get 1 line
temp = line.split(delim); // split that line in 2 with ";"
info[b][a] = info[b][a] + temp[a];
info[b][a+1] = info[b][a+1] + temp[a+1];
if (a >= 1) {
a = 0;
b++;
}
}
scanner.close();
for (i = 0; i < 25; i++){
System.out.println(i+ "-> Info :"+ info[i][0]+"\t"+info[i][1]);
}
return info;
}
public static void main(String args[]) throws Throwable {
getCable();
}
}
我得到的输出:所有Id都在info [0] [0]中,所有描述都在info [0] [1]
中感谢。
答案 0 :(得分:1)
你没有递增b
。你的陈述
if (a >= 1) {
a = 0;
b++;
}
永远不会执行,因为a
永远不会&gt; = 1。你甚至不需要if语句。只需将其替换为b++
即可转到while循环的每次迭代的下一行。
答案 1 :(得分:1)
就这样做
while (scanner.hasNextLine()) {
line = scanner.nextLine(); // get 1 line
info[a]= line.split(delim);
a++;
}
答案 2 :(得分:1)
你可以使用
temp[a]=String.split(";");
a++;
for (i = 0; i < 25; i++){
for (j = 0; j < 2; j++){
if (j == 0) info[i][j] = temp[0];
if (j == 1) info[i][j] = temp[1];
}
j = 0;
}
答案 3 :(得分:0)
我会首先阅读列表中的行
List<String> lines = Files.readAllLines(Paths.get("1.txt"),
StandardCharsets.UTF_8);
然后将行转换为数组
String[][] a = new String[lines.size()][];
for(int i = 0; i < lines.size(); i++) {
a[i] = lines.get(i).split(";");
}