【问题标题】:Can't access instance of a class in main method Java无法在主要方法Java中访问类的实例
【发布时间】:2014-09-08 23:15:58
【问题描述】:

所以我有一个类用于在主要方法中描述一个圆,我应该看看两个圆是否相交。我需要创建该类的两个实例,当我这样做时,我无法访问它们的值?带有 t 的行不起作用,因为它说找不到 Big 或 Lil?

if (r2 >= r1){
    MyCircle Big = new MyCircle(x2,y2,r2);
    MyCircle Lil = new MyCircle(x1,y1,r1);}
else { 
    MyCircle Big = new MyCircle(x1,y1,r1);
    MyCircle Lil = new MyCircle(x2,y2,r2);
}

t = Lil.getX()-Big.getX();

【问题讨论】:

  • 我建议变量名以小写字母开头。这是公认的 Java 约定。

标签: java instance


【解决方案1】:

您在两个不同的范围内声明 Big 和 Lil,因此它们不能在外部使用。

试试这个:

MyCircle Big = null;
MyCircle Lil = null;
if (r2>=r1){
    Big=new MyCircle(x2,y2,r2);
    Lil= new MyCircle(x1,y1,r1);
} else { 
    Big= new MyCircle(x1,y1,r1);
    Lil=new MyCircle(x2,y2,r2);}
}
t=Lil.getX()-Big.getX();

Java 中的“作用域”以“{”开头并以“}”结尾,在这些括号内声明的所有内容都只存在于这些括号内。

此外:

  1. 通常在java中变量的首字母是小写的,所以“Big”应该是“big”,“Lil”应该是“lil”。这不是必须的,但却是一个被广泛接受的约定。类名应为大写。
  2. 你贴的sn-p中没有声明“t”,希望之前已经定义好了。

【讨论】:

    【解决方案2】:

    您应该在if 语句之外定义LilBig 变量,以便在if/else 块之外访问它们。当您在if 块(或else 块)中定义它们时,它们只存在于if/else 块的范围内。

    MyCircle Big = null;
    MyCircle Lil = null;
    if (...) {
       ... // create instance of Big and Lil, but don't declare them here
    } else (...) {
       ... // create instance of Big and Lil, but don't declare them here
    }
    ... // access Big and Lil
    

    【讨论】:

      【解决方案3】:

      这是范围问题。每次使用花括号时,您都在定义一个范围。在该范围内定义的变量仅对该范围可见。作为一般规则:如果要访问范围之外的变量,则相应地定义它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-15
        • 1970-01-01
        • 2016-05-20
        • 1970-01-01
        • 2020-10-10
        • 2014-01-09
        • 2015-07-09
        • 2017-10-12
        相关资源
        最近更新 更多