这部分代码到底在做什么?

时间:2013-08-03 05:03:49

标签: java

if (args.length == 3) {
        displayMode = new DisplayMode(Integer.parseInt(args[0]),
                Integer.parseInt(args[1]), Integer.parseInt(args[2]),
                DisplayMode.REFRESH_RATE_UNKNOWN);
    } else {
        displayMode = new DisplayMode(800, 600, 16,
                DisplayMode.REFRESH_RATE_UNKNOWN);
    }

似乎DisplayMode()接受4个参数,(3个整数和(其他))

但究竟是什么args[1]

我不明白为什么你必须将它解析为整数?

有人可以向我解释一下吗?

3 个答案:

答案 0 :(得分:1)

如果这是java函数的main(String[] args)那么 args[1]String。您必须使用Integer.parseInt解析args[1]以获取其整数值(如果它是integer

args[1]是一个命令行参数,程序希望它存在。 这是更具体的第二个命令行参数。

答案 1 :(得分:0)

我已经阅读了您之前提出的问题(关于帧大小问题600x800 vs 800x600),因此使用该上下文,您需要在第一个和第二个参数上提供整数作为参数。

在java中,main方法有一个像

这样的签名
public static void main(String[] args)

args包含作为命令行参数传递的所有参数

所以,如果你运行

java <yourclassname> 200 400 300

args [0]将包含“200”作为字符串,args [1]将包含“400”作为字符串等等

要转换这些数字并将其传递给您的类,您必须使用Integer.parseInt

答案 2 :(得分:0)

您可以在运行时将命令行参数传递给Java程序。如果使用[1, 2, 3]调用,则以下程序将打印java ArgumentTest 1 2 3

import java.util.Arrays;

public class ArgumentTest {
    public static void main(String[] args) {
        System.out.println(Arrays.toString(args));
    }
}

但是,由于参数都是String,因此您需要解析它们以获取其他数据类型。