访问for循环内的对象/变量

时间:2015-04-02 15:40:28

标签: java loops variables object for-loop

当我尝试打印出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());

3 个答案:

答案 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)

因为recfor循环中定义的私有变量。要访问其范围之外,您需要在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());