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方法完成执行后基本上返回了控件?
答案 0 :(得分:4)
它应该始终是public static void main(String [] args)?
是的,如果您希望它作为切入点。
不能使用除字符串类型以外的一些参数的公共静态int main吗?
没有。 Section 12 JLS解释了JVM的启动,并将其包含在12.1.4中:
最后,在完成类Test的初始化之后(在此期间可能发生了其他相应的加载,链接和初始化),调用了Test的方法main。
方法
main
必须声明为public
,static
和void
。它必须指定一个形式参数(第8.4.1节),其声明的类型是String
的数组。
基本上,仅位是可选的:
如果需要,可以重载该方法,为额外的 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();