无法在main方法Java中访问类的实例

时间:2014-09-08 23:15:59

标签: java instance

所以我有一个用来描述主方法中的圆的类,如果两个圆相交,我应该看到它。我需要创建两个类的实例,当我这样做时,我无法访问它们的值?带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();

3 个答案:

答案 0 :(得分: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. “t”未在您发布的代码段中声明,我希望它之前已定义。

答案 1 :(得分:0)

您应该在Lil语句之外定义Bigif变量,以便在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

答案 2 :(得分:0)

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