我是java的新手。我有一个课程如下
import java.io.*;
class Lexer
{
private static final int KEYWORDS = 11;
private StreamTokenizer tokenizer;
private String punctuation = ",:;.()";
private Token[] punctuationTokens =
{
Token.COMMA, Token.COLON, Token.SEMICOLON, Token.PERIOD, Token.LEFT_PAREN, Token.RIGHT_PAREN
};
// Constructor that creates a lexical analyzer object given the source file
public Lexer(String fileName) throws FileNotFoundException
{
tokenizer = new StreamTokenizer(new FileReader(fileName));
tokenizer.ordinaryChar('.');
tokenizer.quoteChar('"');
}
}
我编写了以下代码来实例化一个对象:
Lexer test = new Lexer("C:\\Users\\Kris\\Desktop\\test.txt");
它返回给我这个错误:无法编译的源代码 - 未报告的异常java.io.FileNotFoundException。谁能让我知道如何实例化这个对象给出类和文件“test.txt”?我非常感谢你的帮助。
答案 0 :(得分:1)
unreported exception java.io.FileNotFoundException.
您还需要使用Object
围绕try-catch
创建调用,因为它可能会抛出FileNotFoundException
或在您执行此操作的方法中添加throws
。< / p>
Lexer test = new Lexer("C:\\Users\\Kris\\Desktop\\test.txt");
此外,针对FilePath
提出Elliott Frisch的建议。
由于IDE
中的C:
,User Access Control
可能无法访问Windows
驱动器的文件,因此最好将IDE
作为Administrator
运行{{1}}并再次执行代码,请仔细检查路径。
答案 1 :(得分:0)
如果我理解你的问题,那么
Lexer test = new Lexer("C:\Users\Kris\Desktop\test.txt");
应该是
Lexer test = new Lexer("C:/Users/Kris/Desktop/test.txt");
你也可以使用(对我来说不太可读)
Lexer test = new Lexer("C:\\Users\\Kris\\Desktop\\test.txt");
因为"\"
开始escape sequence,
以反斜杠(\)开头的字符是转义序列,对编译器有特殊意义。