【问题标题】:Program terminates with no error message程序终止,没有错误信息
【发布时间】:2013-12-06 01:30:45
【问题描述】:

这是我用来回答问题的代码。我应该通过键入 java Spell a 并在控制台中从本地文本文件中以 a 开头的所有单词输出来在 Eclipse 的命令行中查找单词。我的程序无故终止:

import java.util.*;
import java.io.*;

public class Spell {
public static void main (String[] args) throws Exception {
    File file = new File("C:\\Users\\Dennis\\words.txt");
    Scanner fileScanner = new Scanner(file);
    while (fileScanner.hasNext()) {
        String word = fileScanner.next();
        if(word.startsWith(args[0])) {
            System.out.println(word);
        }
    }   
}

}

【问题讨论】:

  • 文件中有以'a'开头的项目吗?
  • 鉴于您的程序应该终止,我希望它完全按照您的编写:读取文件,找不到以您作为args[0] 传递的第一个字母开头的字符串,并且干净利落。
  • 你是如何运行这个程序的?
  • 所有单词都以a开头。我只是在 Eclipse 中使用 run 命令运行程序。在这种情况下,args[0] 究竟做了什么?
  • 您是否在 Eclipse 运行命令中提供了所需的参数?

标签: java terminate


【解决方案1】:

如果您以java Spell garfield 运行此程序,那么args[0] 将在文件中包含garfield,如果任何单词与garfield 匹配,那么您的打印语句将被执行,否则不会执行。您必须在@ 中提供运行时参数987654324@ 运行您的程序,然后您将能够看到您想要的实际输出。

在你的Class 中右键单击包含main method 在tab (x)=Arguments 中选择run as->run configuration 给出你的论点然后运行并查看下面的屏幕截图

【讨论】:

    【解决方案2】:

    在eclipse中,右键单击你的java文件->运行方式->运行配置->选项卡参数,在程序参数中,输入a。如果没有输入参数,您应该在该行得到一个“ArrayIndexOutOfBoundsException”

    if(word.startsWith(args[0])) {

    我建议在行上设置一个断点

    String word = fileScanner.next();

    然后调试。 这样您就可以验证程序扫描的单词并检查 arg[0] 是否是您输入的。

    我已经用 words.txt 运行了你的程序,比如

    自卫队 bsdf csdf dsdf

    和参数c,它会打印出来

    csdf
    正确。

    【讨论】:

    • 啊,是的,我试着在命令行中输入这个词,现在它可以工作了。非常感谢!
    猜你喜欢
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    相关资源
    最近更新 更多