我对一个对象有一个非常基本的问题。
我在main方法的if()语句中创建对象。(还有一个,所以它总是会被创建。)
该对象有一个print()方法,它工作得很好,但是当我将myobject.print()放在if()子句之外时,我得到了一个错误:“找不到符号”。
我想我犯了一个愚蠢的初学者错误,但是if()子句中的myobject.print()可以很好地工作,所以我的问题是,我的对象发生了什么?( main方法在两者之间不做任何其他事情。)
else default to 20, 10, and fill randomly 1/4
{
int a = 20;
int b = 10;
Table myTable = new Table(a,b);
myTable.randomfill(Math.round((a*b)/4)); //round in case defaults change later
System.out.println("Printing Table .... ");
myTable.print(); <-- here it works
}
//always print !!
System.out.println("Printing Table .... ");
myTable.print(); <-- won't work发布于 2012-03-10 22:19:12
myTable的作用域仅限于else块。它在else块完成后不可见。如果你想在else块之外访问它,你可以在else块外定义myTable,并在else块内给它分配对象。
Table myTable =null;
else default to 20, 10, and fill randomly 1/4
{
int a = 20;
int b = 10;
myTable = new Table(a,b);
myTable.randomfill(Math.round((a*b)/4)); //round in case defaults change later
System.out.println("Printing Table .... ");
myTable.print(); <-- here it works
}
//always print !!
System.out.println("Printing Table .... ");
if(myTable != null){ //Make sure myTable is not null.
myTable.print(); <-- won't work
}发布于 2012-03-10 22:23:03
其他人说的话。如果您有以下条件:
if (x == y) {
MyObject obj = new MyObject();
}那么,一旦您离开if的{},就不会定义obj。
要使对象可以在“外部”访问,您需要执行以下操作:
MyObject obj = null;
if (x == y) {
obj = new MyObject();
}(请注意,不要在{}中“声明”obj --省略了前导MyObject。)
发布于 2012-03-10 22:23:20
像myTable这样的局部变量在声明它的代码块中有作用域(仅可见)。这段代码是最里面的一组花括号,所以myTable只能用到else块的末尾。
如果您希望它在else块之后可见,则需要在if之前删除它。类似于:
Table myTable = new Table(a,b);
if (some condition) {
// code removed
} else default to 20, 10, and fill randomly 1/4 {
// code removed
}
// myTable now visible here and until the end of this blockhttps://stackoverflow.com/questions/9647134
复制相似问题