【问题标题】:Java. How to skip over an initialized variable?爪哇。如何跳过初始化的变量?
【发布时间】:2014-05-11 01:18:03
【问题描述】:

所以我在做一个程序,一个不同的类指的是不同类中的一个 int:

if (Doihavetools==0 && Stone.StoneCounter>=10 && Wood.WoodCounter>=50){

但在另一个类中,int在值被“++”ed之前初始化

int WoodCounter;
@Override
public void actionPerformed(ActionEvent e) {
    String action = e.getActionCommand();
    if (action.equals("Chop some wood")) {//ADD A .25 SECOND DELAY INBETWEEN CLICKS
        Random Rand = new Random();
        int W = Rand.nextInt(3) + 1;
        if(W==2){
            WoodCounter++;
        }
        Wood.setText("Click To Collect Wood : Wood:" + WoodCounter);
        System.out.println(WoodCounter);

    }
}

有没有办法让我可以成功地初始化它并同时添加到它? (我希望能够不断添加)

提前致谢, 杰克

【问题讨论】:

  • 可能是我,但我很困惑。你能再澄清一下你的目标吗?
  • 当我执行第一个 if 语句时,“woodcounter”总是出现零值,因为 java 看到它已初始化,然后跳过我添加它。询问您是否需要更多解释
  • 与您的问题无关,在 Java 中,约定是使所有变量以小写字母开头,类型以大写字母开头,常量全部为大写字母。遵守此约定将有助于其他人阅读您的代码。
  • 是的,再次仅代表我自己,我需要更多解释。此外,这些变量不是静态的吗?如果他们是,他们不应该是。顺便说一句,你会想要学习和使用Java naming conventions。变量名应全部以小写字母开头,而类名应以大写字母开头。
  • @Wamlab 您的第一行代码中包含Wood.WoodCounter这一事实大量意味着WoodCounter实际上是一个静态变量,除非您将实例命名为Wood 带有大写字母...在这种情况下,所经历的混乱完全不足为奇。

标签: java if-statement int


【解决方案1】:

我认为你想要的是让变量保持它的价值。尝试创建另一个变量,一个布尔值,在初始化它之前,检查一下你是否已经这样做了。另外,在

的类中声明这个布尔值
if (Doihavetools==0 && Stone.StoneCounter>=10 && Wood.WoodCounter>=50){ 

出现在顶部。 (公开)

所以...那么你可以

if(initialized == false)
{
    int WoodCounter;
    initialized = true;
}

要么这样,要么只使用 Wood.WoodCounter 而不是声明新变量。

【讨论】:

  • 在actionPreformed方法之前的woodCounter声明是第一次对woodCounter进行delcared(即在Wood类内部)
  • 然后全局声明?
  • 那不是问题。问题是调用 WoodCounter 的地方是看到“int WoodCounter”;然后就继续这样做,而不是等待看到增加的价值
  • 如果你在全局范围内声明它,你不必等待它获得一个值,它已经有了一个值,假设另一个类在 WoodCounter 所在的同一类中的某个地方被调用......
  • 如果可以,我会投票,但我还没有代表(我的第一篇文章)
【解决方案2】:

你不应该声明一个woodCounter 变量,除非你想用它来做某事。写wood.woodCounter 来访问你想要的变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多