Java:从txt读取数据到String [] []

时间:2014-02-12 07:44:58

标签: java string file split

我的问题,我有一个如下所示的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]

感谢。

4 个答案:

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