Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中args.length_Java - Fatal编程技术网

在java中args.length

在java中args.length,java,Java,我对Java非常陌生,所以这对其他人来说可能非常简单 我正在按照一个教程做一个文本摘要,我遇到了一个小问题。当我运行程序时,它会输出用法:java Main input.txt关键字。。。。因此,它遵循代码ifargs.length

我对Java非常陌生,所以这对其他人来说可能非常简单

我正在按照一个教程做一个文本摘要,我遇到了一个小问题。当我运行程序时,它会输出用法:java Main input.txt关键字。。。。因此,它遵循代码ifargs.length<1来执行此操作。但是,如何更改它,使其读取文本文件并继续执行程序

generatesummary类工作得很好

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();
}
}

启动应用程序时,只需检查用户是否给出了至少一个参数即可。args.length给出保存命令行参数的数组的长度。为了能够运行它,您需要提供一个文件名作为参数——这就是错误所建议的。 因此,在命令行中,您可以编写类似于java Main filename.txt的内容,使其能够通过检查。

您的主要方法类似于mainString[]args。现在,当您尝试运行该类时,我想您键入了以下命令

java classname
因此,在本例中,args将不包含任何内容。但是如果你打字

java classname fielName

args将包含文件名,它不会进入第一个if块的内部。因为长度og args是1。

args.length提供发送到Java应用程序的参数的长度。如果args.length<1,则表示未向其发送任何参数

您需要输入希望应用程序处理的文件名。如果您是从命令行运行Java,则只需将文件名添加到命令中,例如Java Main file.txt

还要注意,如果您使用IDE进行开发,例如Eclipse,则需要以IDE特有的方式发送参数文件名。您应该咨询该IDE的帮助,或者在此处发布

最后,您可以直接在程序中输入文件名,而不必通过命令行发送。摆脱如果。。。语句检查args.length,并将filePath声明更改为:

字符串filePath=/path/to/filename.txt


祝您在Java学习上好运,并致以最良好的祝愿

我知道您正在主方法中执行该代码。主方法具有下一个签名:

公共静态无效字符串[]args{ ... }

此方法是java中应用程序的入口点。观察它的签名,您可以看到它接收一个名为args的参数,该参数是字符串的数组。由于main方法是入口点,所以这些参数来自于您执行应用程序终端、IDE等的位置。lenght是java数组的长度和属性,它存储数组中的元素数。通过执行ifargs.length<1,可以检查收到的参数是否少于一个,因为代码需要一个文件名作为参数。正如第二行所说,您必须从终端执行代码

System.out.printl用法:java Main input.txt关键字


要在eclipse中添加参数,必须将它们放入运行>运行配置…>参数中。本文对此进行了完美的解释:cs.colontate.edu/helpdocs/eclipseCommLineArgs.html

您能再解释一下您的答案吗。我不明白我应该添加什么额外的代码来让它工作。你不必提供任何新的代码。您只需要使用一些参数运行应用程序。但是,如果您愿意,您可以将检查和硬代码(例如文件名)删除到程序中。有没有办法通过日食做到这一点?当然,实际上不止一种方法。我正在通过eclipse运行它。那么如何通过eclipse实现呢?我给出了解释我的文件名为input.txt的答案。那么,这是否意味着我必须执行java Main input.txt之类的东西?