我正在尝试使用以下代码从命令行将值读入变量。
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]);
行有关
有人知道这里需要更改什么吗?
[您需要找到一种方法来解析您的String(“ Hello”);我想到的第一件事是您需要捕获Exception(有关将String转换为int的操作,请参见Alvin Alexander's page。)>
try{}
在这种情况下将封装int port
和int code
声明。当然,catch{}
属于该尝试。
但是,在您的示例中,您似乎可能将159解析为字符串(args[0]
会映射到输入的第一个参数),然后正确地将“ 13”解析为[ port
变量,最后您的代码陷入了尝试将"Hello"
解析为整数(使用args[2]
)的麻烦,您希望将其映射到args[3]
声明中的msg
。
不要忘记Java使用零索引!您的代码正在寻找以下类型:
[String
,int
,int
,String
因此,如果您要处理用户输入除这些类型以外的内容other
的情况,请使用try{}
catch{}
。以下是try{}
catch{}
上一些相关文档的链接:
[try{},catch{}和simple guide to exception handling。
希望这会有所帮助!
作为其他答案,您需要进行异常处理。考虑输入无效输入后要发生的情况并进行相应处理。您的示例中有任何特定原因会抛出该方法,而不是像下面那样使用try-catch?
您无法将“ Hello”转换为错误的整数