我对Java很陌生,所以对其他人来说这可能很简单。
我正在按照教程制作文本摘要,我遇到了一个小问题。当我运行我的程序时,它输出“Usage:java Main input.txt keywords ...”。所以它遵循代码“if(args.length< 1)”来做到这一点。但是,如何更改它以便读取文本文件并继续执行程序。
generateummary类可以很好地工作。
if(args.length < 1){
System.out.println("Usage: java Main input.txt keywords ...");
return;
}
String filePath = args[0];
if(filePath == null){
filePath = "./input.txt";
}
String[] keywords = null;
if(args.length < 2){
keywords = new String[1];
keywords[0] = "";
}
else{
keywords = new String[args.length-1];
for(int i=1; i<args.length; i++){
keywords[i-1] = args[i];
}
}
System.out.print("keywords:\t");
for(String keyword : keywords){
System.out.print(keyword+"\t");
System.out.println();
}
//String[] keywords = null;
Generator generator = new Generator();
generator.loadFile(filePath);
generator.setKeywords(keywords);
generator.generateSignificantSentences();
System.out.println(generator.generateSummary());
generator.generateSummary();
} }
答案 0 :(得分:1)
这是一个简单的检查,看看用户在启动应用程序时是否至少提供了一个参数。 args.length
给出了包含命令行参数的数组的长度。为了能够运行它,您需要提供一个fileName作为参数 - 这就是错误所暗示的内容。
因此,在命令行中,您可以编写类似java Main filename.txt
的内容,以便能够通过检查。
答案 1 :(得分:0)
您的主要方法与main(String[] args)
类似。现在,当你试图运行该类时,我猜你输入了以下命令。
java classname
因此,在这种情况下args
将不包含任何内容。但是如果你输入
java classname fielName
args
将包含文件名,它不会进入第一个if块。因为长度og args
是1。
答案 2 :(得分:0)
args.length提供发送到Java应用程序的参数的长度。如果args.length&lt; 1,这意味着没有发送任何参数。
您需要发送您希望应用程序处理的文件名。如果您从命令行运行Java,则只需将文件名添加到命令中,例如&#34; java Main file.txt&#34;。
另请注意,如果您使用IDE进行开发(例如Eclipse),则需要以特定于该IDE的方式发送参数(文件名)。您应该参考该IDE的帮助,或在此处发布。
最后,您可以直接在程序中的文件名中进行编码,而不必通过命令行发送。删除检查args.length的if(...)语句,并将filePath声明更改为:
String filePath =&#34; /path/to/filename.txt" ;;
祝你好运,并祝你在Java学习上有所作为!
答案 3 :(得分:0)
我知道你在main方法中执行该代码。主要方法有下一个签名:
public static void main(String[] args){
...
}
此方法是java中的应用程序入口点。看着它的签名你可以看到它收到一个名为args的参数,它是一个String数组。由于主要方法是入口点,因此这些参数来自您正在执行应用程序的位置(终端,IDE等)。 lenght是java数组的属性,用于存储数组所具有的元素数。通过执行if(args.length < 1)
,您正在检查是否收到的参数少于一个,因为代码期望文件名作为参数。哟必须从终端执行您的代码,如第二行所示
System.out.println(“用法:java Main input.txt keywords ...”);
要在eclipse中添加参数,您必须将它们放入“运行&gt;运行配置...&gt;参数”。本文完美地解释了它:cs.colostate.edu/helpdocs/eclipseCommLineArgs.html