public static int [] main(int [])返回什么?

时间:2014-05-22 05:35:55

标签: java string static main args

class Half  {
    public int evaluate(int arg) {
        return arg/2;
    }
}

public class Box {

     public static int [] main (int[] arrIn) {

        int[] arrOut = new int[arrIn.length];
        Half func = new Half();

        for (int i=0; i< arrIn.length; i++)
            arrOut[i] = func.evaluate(arrIn[i]);
        return arrOut;
}
}

因此arrOut的内容是arrIn中的元素除以2。 我想从命令行参数中获取整数数组,并将带有新内容的数组打印到屏幕上。(我不想把它作为字符串值然后转换为int和blah blah) 有没有办法把直接整数作为参数?

其次,上面的代码给出了错误。(显然)

Error: Main method not found in class Box, please define the main method as:
   public static void main(String[] args)

这让我想到了下一个问题。

它应该始终是public static void main(String[] args)吗?除了字符串类型之外,它可以是公共静态int main吗?(不要解释静态部分..根据我的理解,需要在没有对象的情况下调用main方法,这就是为什么它是静态的但是如果强制(以某种方式)返回一个整数,它会在哪里返回它?(我的意思是指哪种方法?还是会直接打印到屏幕上?)我知道它不会打印到屏幕上( duh!)但是那么在main方法完成执行后基本上返回了控件?

2 个答案:

答案 0 :(得分:4)

  

它应该始终是public static void main(String [] args)?

是的,如果您希望它作为切入点。

  

不能使用除字符串类型以外的一些参数的公共静态int main吗?

没有。 Section 12 JLS解释了JVM的启动,并将其包含在12.1.4中:

  

最后,在完成类Test的初始化之后(在此期间可能发生了其他相应的加载,链接和初始化),调用了Test的方法main。

     

方法main必须声明为publicstaticvoid。它必须指定一个形式参数(第8.4.1节),其声明的类型是String的数组。

基本上,位是可选的:

  • 参数名称
  • 是否将其设为varargs参数

如果需要,可以重载该方法,为额外的 main方法提供不同的参数类型和可能的返回值 - 但只有void的方法带有{{ 1}}参数将被视为入口点。

  

我想从命令行参数中获取整数数组,并将带有新内容的打印数组用于屏幕。(我不想把它作为字符串值然后转换为int和blah blah)有没有办法取直接整数作为参数?

没有。你必须自己做。但这很简单:

String[]

答案 1 :(得分:0)

第一件事:

必须始终为public static void main(String[] args)

第二个直接读取整数,使用:

Scanner in = new Scanner(System.in);
int num = in.nextInt();