Java基础:对象和if子句

Java基础:对象和if子句,java,Java,我对一个物体有一个非常基本的问题 我在main方法中的if()语句中创建对象。(有一个else,因此它将始终被创建。) 该对象有一个print()方法,可以正常工作,但是当我将myobject.print()放在创建它的if()子句之外时,我得到一个错误:“找不到符号” 我想我犯了一个愚蠢的初学者错误,但是if()子句中的myobject.print()可以正常工作,所以我的问题是,我的对象发生了什么?(主方法在这两者之间不执行任何其他操作..) else默认为20、10,并随机填充1/4 {

我对一个物体有一个非常基本的问题

我在main方法中的if()语句中创建对象。(有一个else,因此它将始终被创建。)

该对象有一个print()方法,可以正常工作,但是当我将myobject.print()放在创建它的if()子句之外时,我得到一个错误:“找不到符号”

我想我犯了一个愚蠢的初学者错误,但是if()子句中的myobject.print()可以正常工作,所以我的问题是,我的对象发生了什么?(主方法在这两者之间不执行任何其他操作..)

else默认为20、10,并随机填充1/4
{
INTA=20;
int b=10;
表myTable=新表(a,b);
myTable.randomfill(Math.round((a*b)/4));//在默认值稍后更改时进行舍入
System.out.println(“打印表…”);

myTable.print()阅读变量和块的作用域;问题是您在块内声明了变量,并尝试在块外引用它,使其超出范围,因此无法识别。

阅读变量和块的作用域;问题是您在块内声明了变量,并尝试在块外引用它该块,使其超出范围,因此无法识别。

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 
}
Table myTable=null;
否则默认为20、10,并随机填充1/4
{ 
INTA=20;
int b=10;
myTable=新表(a,b);
myTable.randomfill(Math.round((a*b)/4));//在默认值稍后更改时进行舍入
System.out.println(“打印表…”);

myTable.print();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 
}
Table myTable=null;
否则默认为20、10,并随机填充1/4
{ 
INTA=20;
int b=10;
myTable=新表(a,b);
myTable.randomfill(Math.round((a*b)/4));//在默认值稍后更改时进行舍入
System.out.println(“打印表…”);

myTable.print();其他人说了什么。如果您有以下内容:

if (x == y) {
    MyObject obj = new MyObject();
}
如果退出
if
{}
,则不会定义
obj

要使对象在“外部”可访问,请执行以下操作:

MyObject obj = null;
if (x == y) {
    obj = new MyObject();
}

(请注意,您没有在
{}
中“声明”
obj
——您省略了前面的
MyObject

其他人说的话。如果您有以下情况:

if (x == y) {
    MyObject obj = new MyObject();
}
如果退出
if
{}
,则不会定义
obj

要使对象在“外部”可访问,请执行以下操作:

MyObject obj = null;
if (x == y) {
    obj = new MyObject();
}

(请注意,您没有在
{}
中“声明”
obj
——您去掉了前面的
MyObject

像myTable这样的局部变量具有作用域(仅可见)代码块是最里面的一组花括号,因此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 
}
如果希望它在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 block

像myTable这样的局部变量在声明它的代码块中有作用域(仅可见)。代码块是最里面的一组花括号,因此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 
}
如果希望它在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 block

这是评论,不是回答。这是评论,不是回答。