Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:将数据从txt读取到字符串[][]_Java_String_File_Split - Fatal编程技术网

Java:将数据从txt读取到字符串[][]

Java:将数据从txt读取到字符串[][],java,string,file,split,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-S

我的问题是,我有一个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=newstring[25][2];”的变量

我只想读取整个文件,并将第一行的第一个信息放入信息[0][0],将第一行的第二个信息放入信息[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();
    }
 }
公共类函数{
公共静态字符串[][]getCable()引发FileNotFoundException{
字符串delim=“;”;
字符串行=null;
字符串[][]信息=新字符串[25][2];
字符串[]温度;
int i=0,j=0,a=0,b=0;
String filePath=“C:/Users/ogh/Desktop/Appli Java/cable.txt”;
Scanner Scanner=新扫描仪(新文件(文件路径));
对于(i=0;i<25;i++){
对于(j=0;j<2;j++){
如果(j==0)信息[i][j]=“ID:”;
如果(j==1)信息[i][j]=“描述:”;
}
j=0;
}
while(scanner.hasNextLine()){
line=scanner.nextLine();//获取1行
temp=line.split(delim);//用“;”将该行拆分为2
信息[b][a]=信息[b][a]+临时[a];
信息[b][a+1]=信息[b][a+1]+临时[a+1];
如果(a>=1){
a=0;
b++;
}
}
scanner.close();
对于(i=0;i<25;i++){
System.out.println(i+“->Info:+Info[i][0]+“\t”+Info[i][1]);
}
退货信息;
}
公共静态void main(字符串args[])抛出可丢弃的{
getCable();
}
}
我得到的输出是:所有的Id都在信息[0][0]中,所有的描述都在信息[0][1]中


谢谢。

您没有增加
b
。你的陈述

if (a >= 1) {
    a = 0;
    b++;
}

将永远不会执行,因为
a
永远不会>=1。你甚至不需要那个if语句。只要用
b++
替换它,就可以在while循环的每次迭代中转到下一行。

我会先将行读到列表中

List<String> lines = Files.readAllLines(Paths.get("1.txt"),
        StandardCharsets.UTF_8);
List lines=Files.readAllLines(path.get(“1.txt”),
标准字符集(UTF_8);
然后将线转换为数组

String[][] a = new String[lines.size()][];
for(int i = 0; i < lines.size(); i++) {
    a[i] = lines.get(i).split(";");
}
String[]a=新字符串[lines.size();
对于(int i=0;i
就这么做吧

  while (scanner.hasNextLine()) {
            line = scanner.nextLine(); // get 1 line
            info[a]= line.split(delim); 
            a++;
    }
你可以用

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;
}
temp[a]=String.split(“;”);
a++;
对于(i=0;i<25;i++){
对于(j=0;j<2;j++){
如果(j==0)信息[i][j]=temp[0];
如果(j==1)信息[i][j]=temp[1];
}
j=0;
}

我在您的代码中看不到任何
a++
。请学习使用调试器。大多数IDE都应该已经绑定了一个,这样的问题非常容易被您自己使用调试器发现,当您单步执行代码时,您可以通过查看变量的变化来发现