我有一个java代码,我在其中读取了一个txt文件,然后迭代它,以便我可以将其填充到2d数组中。在我读取文件后,我能够打印出其内容,因此我确信该文件已被读取。并且我还确信bufferedreader库的. hasNextLine方法在找到一行时显示为true。但是当我在time循环中使用它时,它就像没有找到任何行一样,因此它没有迭代,因为我不知道我在表中有多少行。==
while (sc.hasNextLine()==true){ row++;}
此外,当我硬编码行数以便检查其他一切是否正常时,我得到了一个line not found错误。请帮帮我。我将链接下面的代码。
package com.company;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void
main(String args[]) throws Exception {
int row=0;
int column=0;
int count=0;
BufferedReader x = new BufferedReader(new FileReader("src\\Table.txt"));
Scanner sc = new Scanner(x);
System.out.println(sc.nextLine()+sc.hasNextLine()+"\n"+sc.nextLine()+sc.hasNext()+"\n"+sc.nextLine()+"\n"+sc.nextLine()+sc.hasNextLine());
while (sc.hasNextLine()==true){ row++;}
System.out.println(row);
for (int i=0; i<row; i++) {
String[] line = sc.nextLine().trim().split(",");
System.out.println(line);
for (String line1 : line) {
if (",".equals(line1)) {
count++;
}
count+=1;
if(count>column){
column=count;
}
}
}
String [][] myArray = new String[row][column];
for (int i=0; i<myArray.length; i++) {
String[] line = sc.nextLine().trim().split(",");
for (int j=0; j<line.length; j++) {
myArray[i][j]= line[j];
}
}
System.out.println(Arrays.deepToString(myArray));
}
}
我也得到了这个输出
"C:\Program Files\Java\jdk-12.0.1\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.3.2\lib\idea_rt.jar=52205:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.3.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\acer pc\IdeaProjects\PDM\out\production\PDM" com.company.Main
CalculusII,Algebra,Networktrue
CalculusII,Algebra,Webtrue
CalculusIII,Prog2,Network
Algebra,Prog1,Webfalse
0
[]
Process finished with exit code 0
执行以下语句时,您已经读取了整个文件,因此没有剩余的行可读取。
System.out.println(sc.nextLine()+sc.hasNextLine()+"\n"+sc.nextLine()+sc.hasNext()+"\n"+sc.nextLine()+"\n"+sc.nextLine()+sc.hasNextLine());
这就是为什么您的后续迭代会立即停止,并且不会显示预期的输出。也许,您所期望的是,一旦到达文件末尾,扫描仪的内部光标就会自动重置。但是,这绝对不是Scanner类(或任何其他类)的行为,它的任何方法都不能将Scanner的光标重置或重新定位到文件的特定点。
您需要做的是关闭连接并重新建立它们以重新开始读取内容。例如,您可以在try块中包含每个文件消耗,以便在完成后自动处理每个连接。
为了简化代码,在第一个循环中,您可以计算行数并检查“列数最多”的行,而在第二个循环中,您可以重新读取文件的内容。
public class Main {
public static void main(String args[]) {
int row = 0;
int column = 0;
int tmp = 0;
try (FileReader fr = new FileReader("src\\Table.txt");
BufferedReader br = (new BufferedReader(fr));
Scanner sc = new Scanner(br)) {
//First file consumption
while (sc.hasNextLine()) {
row++;
tmp = sc.nextLine().split(",").length;
if (tmp > column) {
column = tmp;
}
}
System.out.println(row);
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
try (FileReader fr = new FileReader("src\\Table.txt");
BufferedReader br = (new BufferedReader(fr));
Scanner sc = new Scanner(br)) {
//Second file consumption
String[][] myArray = new String[row][column];
for (int i = 0; i < myArray.length; i++) {
String[] line = sc.nextLine().trim().split(",");
for (int j = 0; j < line.length; j++) {
myArray[i][j] = line[j];
}
}
System.out.println(Arrays.deepToString(myArray));
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
编写了通过Spark读取文本文件的代码...在Local中运行良好...但在HDInsight中运行时产生错误->从Blob读取文本文件 org.apache.spark.sparkException:作业由于阶段失败而中止:阶段0.0中的任务0失败了4次,最近的失败:阶段0.0中丢失的任务0.3(TID 5,wn1-hchdin.bpqkkmavxs0ehkfnaruw4ed03d.dx.int
null > 构造函数,它接受两个输入:(String,String)。这两个输入以正确的顺序表示lastname和firstname。构造函数只需将参数中的数据分配给实例变量。 名为toString()的公共实例方法,它返回一个字符串数据(学生的姓名),格式为“lastname,firstname”。 类MainApp null
问题内容: 我有一个包含一些元数据的文件,然后是包含2个带有标题的列的实际数据。在numpy中使用genfromtxt之前,是否需要将两种类型的数据分开?还是可以以某种方式拆分数据?将文件指针放在标题上方行的末尾,然后从那里尝试genfromtxt怎么办?谢谢该文件的格式如下所示: 问题答案: 如果您不希望第一行,请尝试(如果没有丢失的数据): 或(如果缺少数据): 如果然后要解析标头信息,则可以
我正在编写一个程序,读取文本文件,并显示第一个学生的姓名、年级和全班平均成绩。对于上面给出的文件,结果如下:类中的第一个是Ahmad Hamwi has 16.00,类的平均值是12.25这是我试图读取的W文本文件 这就是我一直犯的错误 我已经试了几个小时了。我知道错误在第37行。这可能与类型有关。我尝试了int和浮动,但一样。
我有一个关于读取和创建数据集的问题。我有一个文本文件,其中包含: 我这样实现了这段代码: 而不是有这样的结果: 它给了我一个结果: 谁能告诉我怎么解决这个问题?