当我尝试打印出rec.report()时,有没有办法在for循环后访问对象“rec”?
(Report()是BmiRecord类中返回新计算结果的方法。)
for(int i=0; i<limit; i++)
{
int height = scanner.nextInt();
int weight = scanner.nextInt();
String name = scanner.nextLine();
BmiRecord rec = new BmiRecord(name, height, weight);
}
System.out.println(rec.report());
答案 0 :(得分:2)
您无法访问for循环外的对象 rec ,因为该对象的范围仅在for循环中有效。正如您在for循环中创建了该对象。
您可以将此与其他问题联系起来。为什么不能访问另一个函数中函数内定义的局部变量?
请参阅以下代码:
BmiRecord rec[]=new BmiRecord[limit];
for(int i=0; i<limit; i++)
{
int height = scanner.nextInt();
int weight = scanner.nextInt();
String name = scanner.nextLine();
rec[i] = new BmiRecord(name, height, weight);
}
for(BmiRecord re:rec){
System.out.println(re.report);
}
答案 1 :(得分:1)
因为rec
是for
循环中定义的私有变量。要访问其范围之外,您需要在for
循环之前定义它。这是您的新代码:
BmiRecord rec;
for(int i=0; i<limit; i++)
{
int height = scanner.nextInt();
int weight = scanner.nextInt();
String name = scanner.nextLine();
rec = new BmiRecord(name, height, weight);
}
System.out.println(rec.report());
答案 2 :(得分:0)
您正在访问超出范围的循环外的对象,尝试类似这样的
BmiRecord rec = null;
for (int i = 0; i < limit; i++) {
int height = scanner.nextInt();
int weight = scanner.nextInt();
String name = scanner.nextLine();
rec = new BmiRecord(name, height, weight);
}
System.out.println(rec.report());