我的隐语是什么[]



我已经超越了自己,正在学习一个学期,这要求我对Java的了解超出我所学的范围。除了通过命令行"echoJavafoo-bar"之外,我不知道如何将类似命令的参数传递给主参数我正在尝试通过java解析JSON;我希望下面的代码足够

这是我的方法:

public static void parseCrewWithListMapping(String filePath) {
    ObjectMapper mapper = new ObjectMapper();
    try {
        List<Crew> crews = mapper.readValue(new File(filePath), 
                mapper.getTypeFactory().constructCollectionType(List.class, Crew.class));
        for(Crew crew : crews) {
            System.out.println(crew);
        }
    } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
    }
}

这是我尝试运行这个方法的主要方法。

public class CrewParsing {
    public static void main(String[] args) 
            throws ParserConfigurationException, SAXException, IOException, XMLStreamException {
        if(args.length < 1)
             throw new RuntimeException("No argument exception");
        System.out.println("Parsing Crew Names");
        CrewParser.parseCrewWithListMapping(args[2]);
        System.out.println("Finishednn");
    }
}

我所有的文件都在正确的位置,我正在尝试重新创建这个:

public static void parseJSONWithListMapping(String filePath) {
    ObjectMapper mapper = new ObjectMapper();
    try {
        List<Employee> employees = mapper.readValue(new File(filePath), 
                mapper.getTypeFactory().constructCollectionType(List.class, Employee.class));
        for(Employee employee : employees){
            System.out.println(employee);
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

方法:

public static void parseJSONWithListMapping(String filePath) {
    ObjectMapper mapper = new ObjectMapper();
    try {
        List<Employee> employees = mapper.readValue(new File(filePath), 
                mapper.getTypeFactory().constructCollectionType(List.class, Employee.class));
        for(Employee employee : employees){
            System.out.println(employee);
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

主要方法(有效):

public class Practice1Test {
    public static void main(String[] args) 
            throws ParserConfigurationException, SAXException, IOException, XMLStreamException {
        if(args.length < 1)
             throw new RuntimeException("No argument exception");
        System.out.println("Parsing Crew Names");
        CrewParser.parseJSONWithListMapping(args[2]);
        System.out.println("Finishednn");
    }
}

当在工作的代码中传递args[2]作为parseJSONWithListMapping的参数时,我得到了很好的json结果。但当我尝试我的代码时,运行了"无参数异常",我想这是在告诉我没有传递任何参数。

可能是什么问题?我真的希望这是足够的细节;

您正在检查args.length < 1并抛出"无参数异常",但随后尝试使用args[2],这是第三个命令行参数。

如果你想要第一个,它是args[0],第二个是args[1],依此类推。如果你需要一个参数,你的args.length < 1是正确的,你应该使用args[0]。如果您需要两个参数,则应该使用args.length < 2来表示错误,然后使用args[0]args[1]

从命令行运行程序时,可以传入参数列表,例如:

java CrewParsing jsonPath1 jsonPath2 jsonPath3

如果您在Eclipse之类的IDE中运行,那么您可能只是单击RunDebug,而忘记输入任何参数。在Eclipse中,右键单击您的主类,当您将鼠标悬停在Run(or Debug) as...上时,选择run(debug) configuration。有一个参数选项卡,您可以在其中输入它们。你正在复制的程序可能已经设置好了。


如果你想了解更多关于参数的信息,我发现Oracle命令行教程很好地解释了这一点:(全部取自链接)

Java应用程序可以接受来自命令行的任意数量的参数。这允许用户在启动应用程序时指定配置信息。

用户在调用应用程序时输入命令行参数,并在要运行的类的名称之后指定这些参数。例如,假设一个名为Sort的Java应用程序对文件中的行进行排序。要对名为friends.txt的文件中的数据进行排序,用户需要输入:

java Sort friends.txt

启动应用程序时,运行时系统通过字符串数组将命令行参数传递给应用程序的主方法。在前面的例子中,在一个数组中传递给排序应用程序的命令行参数包含一个字符串:"friends.txt".

Echo示例将其每个命令行参数单独显示在一行中:

public class Echo {
    public static void main (String[] args) {
        for (String s: args) {
            System.out.println(s);
        }
    }
}

以下示例显示了用户如何运行Echo。用户输入为斜体。

java回声饮料热java

Drink
Hot
Java
//3 separate arguments are all printed out - args[0], args[1], args[2]

如果你仍然不确定你实际上有什么论点,我会试着像教程中展示的那样打印出你的论点。

相关内容

  • 没有找到相关文章

最新更新