我正在尝试使用Java在桌面上找到文本文件中的最高编号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我正在尝试使用Java在桌面上找到文本文件中的最高编号相关的知识,希望对你有一定的参考价值。
我正在尝试编写一些代码来查看桌面上的文本文件,并将该文件中的最大数字吐出到桌面上的新文件中。
我不确定错误是文件扩展名还是代码的其他部分:
import java.io.*;
import java.util.*;
class Lab1 {
public static void main(String[] args) {
try {
Scanner file = new Scanner(new File("/Users/tylerprosper/Desktop/numberlist.rtf"));
int largest = file.nextInt();
while(file.hasNextInt()) {
int number = file.nextInt();
if(number > largest) {
largest = number;
}
System.out.println(number);
}
file.close();
System.out.println("The biggest number in the file is: " + largest);
} catch(IOException e) {
System.out.println(e.getMessage());
}
}
}
我收到的错误是:
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:860)
at java.base/java.util.Scanner.next(Scanner.java:1497)
at java.base/java.util.Scanner.nextInt(Scanner.java:2161)
at java.base/java.util.Scanner.nextInt(Scanner.java:2115)
at Lab1.main(Lab1.java:9)
文本文件的内容是1-9个,各自连续,如下:
1
2
3
4
5
6
7
8
9
这是一个screencap的链接:https://imgur.com/gP3AgjE
答案
如果您坚持以.rtf格式存储数据,可以尝试以下代码。它使用RTFEditorKit将.rtf文件作为文档对象读入,然后遍历文档以获取数据并相应地进行比较。无论如何我不建议您使用.rtf,而是使用纯文本文件,这样您就可以跳过这个单调乏味的步骤。如果您使用的是纯文本文件,则只需使用您编写的代码即可实现目标。
File inputFile = new File("/Users/tylerprosper/Desktop/numberlist.rtf");
RTFEditorKit rtfParser = new RTFEditorKit();
Document document = rtfParser.createDefaultDocument();
rtfParser.read(new FileInputStream(inputFile), document, 0);
int size = document.getLength();
int largest = 0;
int number ;
// i+=2 is to skip the next line character
for(int i = 0 ; i < size ; i+=2)
{
String text = document.getText(i,1);
number = Integer.parseInt(text);
if(number > largest) {
largest = number;
}
System.out.println(number);
}
System.out.println("The biggest number in the file is: " + largest);
以上是关于我正在尝试使用Java在桌面上找到文本文件中的最高编号的主要内容,如果未能解决你的问题,请参考以下文章