我正在尝试在 AI 中模拟经典的水壶问题。我制作了一个“JugsState”类,用于存储两个水壶的当前状态,即 jug1 中有多少升水,jug2 中有多少升水。此外,我想存储每个水壶可以容纳的最大水量,我将从用户那里获取该值作为输入。由于这个(两个水 jar 的容量)始终保持不变,因此我将它们声明为静态最终变量。但是我无法在构造函数中初始化它们。是否有任何其他替代方案,它保持类 JugsState 中 max_jug 变量的封装?
class JugsState
{
private static final int max_jug1,max_jug2;
private int jug1,jug2; //stores the current amount of water in the jugs.
JugsState(int a1,int a2)
{
max_jug1 = a1;
max_jug2 = a2;
}
}
错误:“无法为最终变量 max_jug1 赋值” 错误:“无法为最终变量 max_jug2 赋值”
最佳答案
您不能更改 final
变量,因为它是 final
。但是,您可以在声明时将其设置为您想要的任何值。您可以创建一个静态函数来获取 jar 的最大值。它可能是这样的,如果你想从 System.in 中获取它:
private static int getMax(){
System.out.println("Enter the maximum for a jar:");
Scanner in=new Scanner(System.in);
return in.nextInt();
}
然后使用
private static final int max_jug1=getMax();
private static final int max_jug2=getMax();
代替
private static final int max_jug1, max_jug2;
这将为程序运行的其余时间设置这些变量。
关于java - 我应该如何根据用户输入设置静态最终变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27876862/