【问题标题】:(beginner) Cannot access variable from void [closed](初学者)无法从 void 访问变量 [关闭]
【发布时间】:2014-01-04 05:05:33
【问题描述】:

我正在创建一个银行帐户程序来学习 OOP。我创建了一个名为 w_or_d 的 void 方法(代表取款或存款),但在我的 void 内生成的变量不会转移到 void 之外。

它将我的变量 (finalbalance) 显示为 0

public class users {
  int balance;
  int finalbalance;

  public void w_or_d(int word, int amount) {

    if (word ==0) {
      int finalbalance = balance-amount;
    }
    else if (word == 1) {
      int finalbalance = balance+amount;
    } 

  }

  System.out.println(finalbalance);
}

【问题讨论】:

  • 我会强烈建议从一本关于 Java 编程的初学者书籍开始,或者从 Oracle 提供的教程开始。
  • 你需要了解局部作用域和全局作用域的概念

标签: java variables void


【解决方案1】:

您正在使用重复的方法局部变量定义来隐藏您的实例变量:

    int finalbalance = balance-amount;

只做分配而不是重新声明

    finalbalance = balance-amount;

同时使用关键字this 将确保您设置的是实例变量而不是局部变量,以防您有两个同名的此类变量。所以这更安全:

   this.finalbalance = balance-amount;

【讨论】:

    【解决方案2】:
    int finalbalance = balance+amount;
    int finalbalance = balance+amount;
    

    这些句子覆盖了

    int finalbalance;
    

    所以当你

    System.out.println(finalbalance);
    

    finalbalance 没有正确的值。

    只需删除“int”

    int最终余额=余额+金额;

    int最终余额=余额+金额;

    【讨论】:

      【解决方案3】:

      您已将finalbalance 声明为类属性和(名称不佳的)方法w_or_d() 中的局部变量。

      你正在改变本地的;当局部变量超出范围时,对哪些更改将被忽略。

      这里有教程:Lesson: Classes and Objects

      【讨论】:

      • 那么如何在我的 void 之外获得“finalbalance”的值?
      • @user313300 取出方法中的int。你声明了两次
      【解决方案4】:

      或者可以在else if声明后使用

      this.finalbalance =finalbalance;
      

      因此它将 finalbalance 分配回类变量。

      【讨论】:

        猜你喜欢
        • 2019-03-05
        • 1970-01-01
        • 1970-01-01
        • 2021-02-13
        • 2016-10-13
        • 1970-01-01
        • 2011-03-17
        • 2020-07-25
        • 1970-01-01
        相关资源
        最近更新 更多