gpt4 book ai didi

java - 使用 int 而不是 String : public static void main (int[] args)

转载 作者:搜寻专家 更新时间:2023-11-01 01:03:16 25 4
gpt4 key购买 nike

我的印象是 main 方法必须采用“public static void main (String[] args){}”的形式,您不能传递 int[] 参数。

但是,在 Windows 命令行中,当运行以下 .class 文件时,它接受 int 和 string 作为参数。

例如,使用此命令将给出输出“stringers”:“java IntArgsTest stringers”

我的问题是,为什么?为什么这段代码会毫无错误地接受一个字符串作为参数?

这是我的代码。

public class IntArgsTest 
{
public static void main (int[] args)
{

IntArgsTest iat = new IntArgsTest(args);

}

public IntArgsTest(int[] n){ System.out.println(n[0]);};

}

最佳答案

传递给 main 方法的所有东西,JVM 用来启动程序的东西,都是一个字符串,所有东西。它可能看起来像 int 1,但它实际上是字符串“1”,这是一个很大的区别。

现在有了您的代码,如果您尝试运行它会发生什么?当然它会编译得很好,因为它是有效的 Java,但是您的主要方法签名与 JVM 要求的作为程序起点的签名不匹配。

要运行您的代码,您需要添加一个有效的主要方法,例如,

public class IntArgsTest {
public static void main(int[] args) {

IntArgsTest iat = new IntArgsTest(args);

}

public IntArgsTest(int[] n) {
System.out.println(n[0]);
};

public static void main(String[] args) {
int[] intArgs = new int[args.length];

for (int i : intArgs) {
try {
intArgs[i] = Integer.parseInt(args[i]);
} catch (NumberFormatException e) {
System.err.println("Failed trying to parse a non-numeric argument, " + args[i]);
}
}
main(intArgs);
}
}

然后在调用程序时传入一些数字。

关于java - 使用 int 而不是 String : public static void main (int[] args),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10183611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com