我的参数 [] 是啥?

     2023-02-23     169

关键词:

【中文标题】我的参数 [] 是啥?【英文标题】:What Are My args[]?我的参数 [] 是什么? 【发布时间】:2014-12-30 09:43:08 【问题描述】:

我已经超越了自己,并且正在上一个学期,这要求我具备超出我所学知识的 Java 知识。我不知道如何将命令之类的参数传递给主参数,除了通过命令行的“echo Java foo 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("Finished\n\n");

    

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

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("Finished\n\n");

    

在有效的代码中将args[2] 作为parseJSONWithListMapping 的参数传递时,我的json 结果很好。 但是当我尝试我的代码时,运行了“无参数异常”,我假设它告诉我没有传递任何参数。

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

【问题讨论】:

您能否展示一个用于运行程序的示例命令行参数列表? args 是您可以调用 main 方法的参数!如果您使用 Eclipse,请检查“运行配置”以向您的启动添加一些参数! 【参考方案1】:

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

java CrewParsing jsonPath1 jsonPath2 jsonPath3

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


如果您想了解有关参数的更多信息,我发现 Oracle command line tutorial 解释得很好:(全部取自链接)

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

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

java Sort friends.txt

启动应用程序时,运行时系统通过字符串数组将命令行参数传递给应用程序的 main 方法。在前面的示例中,命令行参数以包含单个字符串的数组形式传递给排序应用程序:“friends.txt”。

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

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

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

java Echo Drink Hot Java

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

如果您仍然不确定自己实际有哪些论点,我会尝试按照教程向您展示的那样打印出您的论点。

【讨论】:

如果您从 Eclipse 等 IDE 运行,您可能只是单击了运行或调试而忘记输入任何参数。在 Eclipse 中 - 右键单击​​您的主类,当您将鼠标悬停在 Run(或 Debug) as... 上时,选择 run(debug) 配置。有一个参数选项卡,您可以在那里输入它们。您从中复制的程序可能已经设置了它们。 【参考方案2】:

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

如果你想要第一个,那就是args[0],第二个是args[1],以此类推。如果你需要一个参数,你的args.length &lt; 1 是正确的,你会使用args[0]。如果您需要两个参数,您可以使用args.length &lt; 2 来表示错误,然后使用args[0]args[1]

【讨论】:

我试图将一个非可变整数参数从一个函数传递给其他定义的函数;我的错误是啥?

...一个非可变整数参数从一个函数传递给其他定义的函数;我的错误是啥?【英文标题】:Iamtryingtopassanon-mutableintegerargumentfromonefunctiontootherdefinedfunctions;whatismymistake?我试图将一个非可变整数参数从一个函数传递给其他定义的函数... 查看详情

这些 GCC/G++ 参数是啥?

...一直在使用UVaOnlineJudge来解决一些编程挑战,并且在提交我的解决方案时,我被告知法官将使用以下我不知道的GCC/G++参数编译我的代码:-lm-lcrypt-pipe-DONLINE_JUDGE.他们是做什么的?非常感谢您!【问 查看详情

Chromecast Launch,DIAL 参数是啥?我不是在运行我的应用程序,而不是一些注册的标准吗?

】ChromecastLaunch,DIAL参数是啥?我不是在运行我的应用程序,而不是一些注册的标准吗?【英文标题】:ChromecastLaunch,what\'swiththeDIALparameters?Aren\'tIruningMYapplication,notsomeregisteredstandard?ChromecastLaunch,DIAL参数是什么?我不是在运行我... 查看详情

If 语句取决于传递的命令行参数是啥? [复制]

...么?[复制]【发布时间】:2016-08-1903:18:07【问题描述】:我的spring-boot应用程序可以从commandline运行,arguments作为参数传递。我想设置我的mainmethod,这样如 查看详情

“输入参数过多”是啥意思?

...描述】:我正在尝试使用quadtx在matlab中评估一个函数,但我的代码给了我一个“输入参数过多”的错误,我不确定是什么问题?我为varargin输入了错误的值还是其他什么?我在MATLAB命令提示符中输入:>f= 查看详情

PayPal成功返回的返回参数是啥

...我对此进行了多次研究,但似乎找不到任何相关信息。当我的客户成功向我付款(使用RESTAPI集成)并返回到指定的返回U 查看详情

没有列参数的 df.repartition 分区是啥?

...可选的列参数,它当然会通过该键重新分区您的数据帧。我的问题是-当没有密钥时,Spark如何重新分区?我无法进一 查看详情

转换此节点的正确 xdt:Locator 参数是啥?

...数是什么?【发布时间】:2013-03-1315:03:04【问题描述】:我的app.config文件中有以下内容。我正在使用SlowCheetah,只想替换配置/entityFramework/defaultConnectio 查看详情

我如何告诉 PyCharm 参数应该是啥类型?

...到构造函数、赋值和方法调用时,PyCharmIDE非常擅长分析我的源代码并确定每个变量应该是什么类型。我喜欢它正确的时候,因为它给了我很好的代码完成和参数信息,如果我 查看详情

OData 8 - ODataController 上的新输入参数语法是啥?

...6:09:42【问题描述】:对于oData7,此代码允许我将id传递给我的oDataController函数。[HttpGet][E 查看详情

在 Bash 中解析命令行参数的最佳方法是啥?

...我仍然想不出在.sh脚本中解析cmdlineargs的最佳方法。根据我的参考,getoptscmd是可行的方法,因为它“在不干扰位置参数变量的情况下提取和检查开关。意外开关或缺 查看详情

互斥锁因参数无效而失败是啥意思?

...【发布时间】:2015-05-0700:52:29【问题描述】:这段代码在我的主进程中被调用并且编译正常,但是执行时总是抛出下面的错误。bounded_buffer<MyData>bb(200);Producer<bounded_buffer< 查看详情

php.exe的-q参数是啥意思?

...的静默模式。quietmode各版本一直都有该模式。参考技术A我的版本是5.3.8,目测没有这个参数 查看详情

在 Apiary 中表示输入参数是日期/时间的正确格式是啥?

...在编辑我正在处理的项目的一些Apiary文档,并且需要指出我的API调用之一的参数是日期时间字 查看详情

clearText 函数中的“e”参数是啥意思?

...现以下代码以从画布中删除文本。虽然它工作得很好。但我的问题是它在我点击文本时实现。我希望它应该在我按下删除键或删除html按钮时实现。这就是为什么我试图理解 查看详情

输入反映在双引号之间的标记参数内是啥意思?

...】:2019-12-0801:23:08【问题描述】:最近对Acunetix的扫描在我的一个页面上显示了一些vulnerability。我尝试复制它,但找不到任何漏洞。所谓的易受攻击的标题 查看详情

使用 3 个不同的参数对数据进行分类的算法是啥?

...发布时间】:2014-04-2922:50:41【问题描述】:我正在尝试为我的人工智能论文开发一个android(java)项目。它很快基于故事阅读和单词测验。一个人读一个故事并标记他不知道的单词。这些单词被注 查看详情

将数组作为 CLI 参数传递给程序的标准表示法是啥?

...6-12-2007:33:55【问题描述】:我需要将数组作为参数传递给我的应用程序。它是hsl表示法中的颜色数组,因此值看起来像"hsl(123,20%,30%)", 查看详情