因为我希望用户输入数字而不是我使用的字符串
public static void main(Integer[] args)
那么,为什么这是错的?
答案 0 :(得分:4)
主方法上的签名必须是:
public static void main(String[] args)
您没有任何其他选择。如果需要,可以通过Integer.parseInt(someString)
答案 1 :(得分:3)
Main是特殊的,因为它必须存在才能启动程序,所以需要有一个固定的签名。在引擎盖下,java运行时查找启动程序的魔术签名。
是神奇的签名public static void main(String[] args)
如果你想获得整数,你需要在事后使用
解析它们Integer.parseInt( x );
答案 2 :(得分:2)
你可以 为你的main方法设置一个String []数组(除非你重载它,但是现在我们暂不讨论细节:-D)。
但是,您可以使用Integer.parseInt将String [] args的每个元素更改为int,类似
public static void main(String[] args)
{
int[] values = new int[args.length];
for (String arg : args)
{
//Get or do something with the integer value here
}
}
这是因为底层平台只知道如何将字符串传递给您的程序。当您打开命令提示符或终端并执行:
>java MyClass 3 4 5
它不知道你想要[“3”,“4”,“5”]像整数一样对待。它让Strings处理程序。
答案 3 :(得分:1)
当JVM加载你的类并尝试执行它时,它会查找带有签名的方法main()
public static void main (String[] args) ...
其他任何事情都是无法解决的。如果您期望整数,请使用Integer.parseInt()方法将输入字符串转换为整数,如Zach所述。我将该转换放在try-catch块中以捕获NumberFormatException,并具有
System.err.println ("This class accepts Integer arguments only");
在相应的catch块中。问候, - M.S。
答案 4 :(得分:0)
您需要接受一个字符串数组,并在运行时将字符串转换为整数。只是它的工作方式......
答案 5 :(得分:0)
main的方法签名总是(String [] args)。如果你要获得整数,那么你必须使用下面的代码片段将args []转换为int
int aInt = Integer.parseInt(args[0]);