gpt4 book ai didi

java - 如何根据cmd args初始化静态最终变量?

转载 作者:行者123 更新时间:2023-12-02 01:58:13 24 4
gpt4 key购买 nike

类(class)作业简介要求我将可选的 cmd 参数分配给静态最终变量。

我尝试在 main() 中执行此操作,但编译器提示“无法为最终变量赋值”。我尝试在 main() 调用的静态方法中执行此操作,但出现同样的错误。我听说过其他答案中使用了静态 block ,但当我决定分配什么时,我需要能够到达 cmd args 。我在参数解析方面也遇到了一些麻烦,因为除非提供了一个参数,否则两个参数都应该有默认值。非常欢迎任何额外的建议。

public class FibonacciNim {
private static Scanner myScanner = new Scanner(System.in);
private static final int NO_OF_HEAPS;
private static final int TOKENS_PER_HEAP;

public static void main(String[] args) {
// set heaps and tokens using args
if (args.length == 0) {
NO_OF_HEAPS = 3;
TOKENS_PER_HEAP = 9;
} else {
boolean usageCorrect = false;
for (int i = 0; i < args.length-1; i++) {
if (args[i].equals("-heaps")) {
try {
NO_OF_HEAPS = Integer.parseInt(args[i+1]));
usageCorrect = true;
} catch (NumberFormatException e) {
usageCorrect = false;
}
} else if (args[i].equals("-tokens")) {
try {
TOKENS_PER_HEAP = Integer.parseInt(args[i+1]);
usageCorrect = true;
} catch (NumberFormatException e) {
usageCorrect = false;
}
}
}
}

...

}

...

}

感谢您的阅读!

最佳答案

实际上,您不能真正将命令行中的某些内容分配给静态最终变量。 (你也许可以通过极其肮脏的黑客手段,但这可能不是任务的目的。)

可能的是,您应该创建一个可变的静态最终并将其分配给其中的内容。这是一种糟糕的做法,你真的不应该在现实生活中这样做,但它至少是合理的。例如,您可能会写

static final String[] argHolder = new String[1];
public static void main(String[] args) {
...
argsHolder[0] = args[0];
...
}

关于java - 如何根据cmd args初始化静态最终变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58701908/

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