我目前正在Eclipse中进行一个学校项目(我们刚刚开始使用它),我们遇到了一个小问题:因为我们以前使用过BlueJ,所以我们没有任何主方法,我们添加了一个,但遇到了问题。
我们必须在参数中发送Int值,而不是带有args的String[],我们尝试过公共静态void main(Int[]args)这会导致以下错误:
错误:在类Tester中找不到Main方法,请定义Main方法为:public static void main(String[]args)
我想知道我们应该做些什么/改变一下才能让它发挥作用。
了解Integer.parseInt("123")
,
看见http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt%28java.lang.String,%20int%29
我希望你能弄清楚剩下的:)
Java将查找public static void main(String[] args)
您必须将整数值作为字符串传递并对其进行解析
这是指向Integer.parseInt(String)
文档的链接。
正如其他人所说,您不能更改main
方法的签名。要从String
参数中获得整数,请使用:
public static void main(String[] args) {
int first = Integer.parseInt(args[0]); // use whatever index you need
}
正如错误所说,执行类时将调用的主方法必须具有签名public static void main(String[] args)
。你不能只是给它不同的论点。
如果在命令行上将数字作为参数传递,Java将以字符串的形式读取它们。如果要将它们转换为数字类型,则必须在代码中明确执行此操作。
尝试在String数组中发送整数。
new String[]{"1"}
然后取回:
Integer yourInteger = Integer.valueOf(args[0])
您需要将值作为String传递,然后将其解析为Integer。
看看这个代码示例:
public static void main(String[] args) throws Exception {
int value = Integer.parseInt(args[0]);
System.out.println("My int value: " + value);
}
如果参数不可解析,则需要使用try-catch来保护parseInt以进行错误管理。
只需传入一个字符串,然后使用Integer.parseInt(string)
获取所需的整数。
编写如下的主方法
public static void main(String[] args){
}
。
并使用Integer.parseInt(str)
您必须将主方法保留如下:
public static void main(String[] args){
//....
}
正如您指出的错误。现在,在main方法中可以将参数的类型更改为整数。
public static void main(String[] args){
int arg0=Integer.parseInt(args[0]);
int arg1=Integer.parseInt(args[1]);
//... etc.
}
问候!
此类将打印出您在命令行中输入的整数:
public class IntegersFromCommandLine
{
public static void main(String[] args)
{
for (int i = 0; i < args.length; i++)
{
System.out.println(Integer.parseInt(args[i]));
}
}
}
如果您给它命令行参数1324 21 458 9564 1 0-789 40,它将给出以下输出:
1324
21
458
9564
1
0
-789
40
不能更改主方法的签名。这是操作系统的一个约束。
只需通过Integer.parseInt(...)
将String解析为整数,然后调用实际方法!