静态错误:此类没有接受String []的静态void main方法

时间:2011-01-20 23:46:10

标签: java string syntax integer

因为我希望用户输入数字而不是我使用的字符串

public static void main(Integer[] args)

那么,为什么这是错的?

6 个答案:

答案 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]);