Java:将数据从txt读取到字符串[][]
我的问题是,我有一个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
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都应该已经绑定了一个,这样的问题非常容易被您自己使用调试器发现,当您单步执行代码时,您可以通过查看变量的变化来发现