假设变量不能解析为变量?

时间:2014-12-26 01:48:55

标签: java variables if-statement for-loop

我正在做一个基本的Java教程,下面是问题。

编写一个方法,打印从1到100的数字。但是对于三个打印的倍数ÒFizzÓ而不是数字,以及五个打印的ÒBuzzÓ的倍数。对于三和五的倍数的数字打印ÒFizzBu​​zzÓ。“

我的代码在

下面
public static void fizzBuzz(){

        for(int i = 0; i < 101; i= i +1 )
            System.out.println(i);
        if (i%3 == 0){
            System.out.println("ÒFizzÓ");
        }else if (i % 5 == 0){
            System.out.println("ÒBuzzÓ");
        }else if (i % 15 == 0){
            System.out.println("ÒFizzBuzzÓ");
        }
    }

Eclipse告诉我“i”无法解析为变量。这让我感到困惑,因为我认为我已经在我的for循环中将“i”定义为整数?感谢您抽出宝贵时间来解决这个新手问题:)

3 个答案:

答案 0 :(得分:3)

在第一个语句后添加大括号或循环体结束。此外,对于您的方法,您需要首先测试15,因为它是3和5的倍数

for(int i = 0; i < 101; i++) { // <-- i++ is short for i = i + 1
    System.out.println(i);
    if (i % 15 == 0) {
        System.out.println("ÒFizzBuzzÓ");
    } else if (i % 5 == 0) {
        System.out.println("ÒBuzzÓ");
    } else if (i % 3 == 0) {
        System.out.println("ÒFizzÓ");
    }
}

答案 1 :(得分:2)

我知道一个有趣的故事,因为开发人员使用if块更新了代码但是...... if语句只有一条指令且没有大括号,因此Apple损失了几百万美元他没有看到它。因此,他满意条件时愿意添加的代码实际上总是被执行。

在你的情况下,你不会赔钱,但你肯定也犯了同样的错误:

for(int i = 0; i < 101; i= i +1 ) {
    System.out.println(i);
    if (i % 15 == 0){
        System.out.println("ÒFizzBuzzÓ");
    } else if (i%3 == 0){
        System.out.println("ÒFizzÓ");
    } else if (i % 5 == 0){
        System.out.println("ÒBuzzÓ");
    }
}

答案 2 :(得分:0)

当Java说某些东西无法作为变量解析时,它通常在声明的范围之外使用,或者根本没有声明它。在你的情况下,你的无括号for循环导致问题。