从java中的命令行读取

问题描述 投票:0回答:3

我正在尝试使用以下代码从命令行将值读入变量。

public static void main (String [] args) throws Exception
{

    // Read in all of the passed arguments                     
    String address = args[0];
    int port =
        Integer.parseInt(args[1]);
    int code =
        Integer.parseInt(args[2]);
    String msg = args[3];

}

当我使用输入“” 159 13“你好”

我收到以下错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "Hello"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at client.main(client.java:15)

与第int code = Integer.parseInt(args[2]);行有关

有人知道这里需要更改什么吗?

java input command arguments
3个回答
0
投票

[您需要找到一种方法来解析您的String(“ Hello”);我想到的第一件事是您需要捕获Exception(有关将String转换为int的操作,请参见Alvin Alexander's page。)>

try{}在这种情况下将封装int portint code声明。当然,catch{}属于该尝试。

但是,在您的示例中,您似乎可能将159解析为字符串(args[0]会映射到输入的第一个参数),然后正确地将“ 13”解析为[ port变量,最后您的代码陷入了尝试将"Hello"解析为整数(使用args[2])的麻烦,您希望将其映射到args[3]声明中的msg

不要忘记Java使用零索引!您的代码正在寻找以下类型:

[StringintintString

因此,如果您要处理用户输入除这些类型以外的内容other

的情况,请使用try{} catch{}

以下是try{} catch{}上一些相关文档的链接:

[try{}catch{}simple guide to exception handling

希望这会有所帮助!


0
投票

作为其他答案,您需要进行异常处理。考虑输入无效输入后要发生的情况并进行相应处理。您的示例中有任何特定原因会抛出该方法,而不是像下面那样使用try-catch?


0
投票

您无法将“ Hello”转换为错误的整数

© www.soinside.com 2019 - 2024. All rights reserved.