英文:
Read the first number in a line, move on to next line without reading the rest of the line until end of file
问题
我正在从一个txt文件中读取内容。它包含如下内容...
2 // 两
3
40 // 哦,看,四十
目前输出看起来是这样的...
2
//
两
3
40
//
哦
看,
四十
我不想要那样。我只想要整数,所以输出应该是...
2
3
40
我想要只读取每行开头的整数,忽略掉行的其余部分,然后移到下一行。我会一直这样做,直到达到文件的末尾。最终,所有这些整数将放入一个数组中。
try {
File program = new File("file.txt");
Scanner myReader = new Scanner(program);
while (myReader.hasNextLine()) {
int data = myReader.nextInt();
System.out.println(data);
}
myReader.close();
} catch (FileNotFoundException e) {
System.out.println("文件未找到。");
e.printStackTrace();
}
我尝试过使用BufferedReader,但我认为它不能实现我想要的功能,所以我选择了Scanner。如果有关这里的尝试,请看下面的代码。
try {
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
String line;
while((line = reader.readLine()) != null) {
// 将每行的内容拆分成单词,然后获取第一个单词作为整数
String[] words = line.split(" ");
if (words.length > 0) {
int data = Integer.parseInt(words[0]);
System.out.println(data);
}
}
reader.close();
} catch (IOException e) {
System.out.println("文件未找到。");
e.printStackTrace();
}
这两段代码可以帮助你只读取每行开头的整数并将其打印出来。
英文:
I am reading from a txt file. It has stuff in it like...
2 // Two
3
40 // oh look, forty
Currently the output looks like this...
2
//
Two
3
40
//
oh
look,
forty
I don't want that. I just want the integers, so the output should be...
2
3
40
I want to read just the integer at the beginning of the line, ignore the rest of the line then move to the next line. I will keep doing this until I reach the end of the file. Ultimately all these integers will go into an array.
try {
File program = new File("file.txt");
Scanner myReader = new Scanner(program);
while (myReader.hasNextLine()) {
String data = myReader.next();
System.out.println(data);
}
myReader.close();
} catch (FileNotFoundException e) {
System.out.println("File not Found.");
e.printStackTrace();
}
I have tried BufferedReader but I think it can't do what I want it to do, so I went with a Scanner. If it matters here is my attempt with that.
try {
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
String line;
while((line = reader.()) != null)
System.out.println(line);
reader.close();
} catch (IOException e) {
System.out.println("File not Found.");
e.printStackTrace();
}
答案1
得分: 1
只考虑你想要在文本行中找到的第一个数字,我将使用 Scanner.nextInt。
try {
File program = new File("file.txt");
Scanner myReader = new Scanner(program);
while (myReader.hasNextLine()) {
Integer data = myReader.nextInt();
myReader.nextLine(); // 避免将7作为nextInt读取,例如:"5 // seven 7"
System.out.println(data);
}
myReader.close();
} catch (FileNotFoundException e) {
System.out.println("文件未找到。");
e.printStackTrace();
}
英文:
Considering you want only the first number found in a line of text, I'll use Scanner.nextInt.
try {
File program = new File("file.txt");
Scanner myReader = new Scanner(program);
while (myReader.hasNextLine()) {
Integer data = myReader.nextInt();
myReader.nextLine(); // avoid reading 7 as nextInt. eg. "5 // seven 7"
System.out.println(data);
}
myReader.close();
} catch (FileNotFoundException e) {
System.out.println("File not Found.");
e.printStackTrace();
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论