【问题标题】:Instance variable value not being printed [duplicate]未打印实例变量值[重复]
【发布时间】:2016-07-21 09:09:10
【问题描述】:

我正在努力学习 Java。目前正在学习变量的类型。 我编写了一个小程序,定义实例、局部、静态变量,并尝试在 main 方法中使用 with 打印相同的变量。但我收到错误消息“我无法从静态上下文中引用非静态变量。下面是我的程序

public class variable{
  int i=5;
  static int j=10;
  public static void main(String[] args){
    int k=15;
    System.out.println(i);
    System.out.println(j);
    System.out.println(k);
  }
}

请告诉我程序有什么问题

【问题讨论】:

  • 请用正确的缩进格式化您的代码。不是针对这个问题,而是在您的 IDE 中。良好的格式有助于您更轻松地发现问题。
  • 因为我是初学者,所以我使用记事本编写代码,而不是任何工具。
  • 你不能在静态方法中调用非静态变量,因为“i”是一个非静态变量&在静态​​主方法中使用
  • @user1861033 - 在此之前你已经问了 29 个问题。您应该知道您的代码应该正确格式化(到现在为止):)
  • @user1861033 我强烈建议您使用 IDE,例如 eclipse。起初它可能看起来很复杂,但它在开发过程中为您提供了很多帮助。

标签: java


【解决方案1】:

你需要创建一个变量实例并访问 i

variable v = new variable();

// then access v.i

顺便说一句,你的班级名称使用 Camelcase。

【讨论】:

    【解决方案2】:

    int i 应该是静态的,因为静态上下文不能引用非静态变量

    【讨论】:

      【解决方案3】:

      选项:

      为您的班级创建一个新实例,以便您可以访问 i。事实上,它可能不是最好的选择,因为你应该将它设为私有,并添加一个 getter 方法...... :)

      由于静态 main 方法,您可以将 int i 更改为 static int i

      +1 : 最好将类名放在一起... :)

      【讨论】:

      • 该项目的重点是拥有一个非静态变量。
      • @f1sh 是的,对不起,你是对的......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      • 2019-07-13
      • 2020-01-07
      • 2017-01-14
      • 1970-01-01
      • 2018-01-24
      相关资源
      最近更新 更多