Eclipse发现了一个错误,但我没有看到它

时间:2014-03-19 18:44:47

标签: java eclipse

我想在Java中创建一个十进制到二进制转换器。我尝试了这个代码(在这里),但“Eclipse”说

  

System.out.println(y);

有问题。它说:

  

线程“main”java.lang.Error中的异常:   未解决的编译问题:y无法解析为变量

import java.util.Scanner;

public class dtb {
    public static void main(String[] args) {
        Scanner myscanner = new Scanner (System.in);
        int num= myscanner.nextInt();
        int base= myscanner.nextInt();  
        int i = 0;
        while (num >= base) {
            int x = (num % base);
            num = num / base;
            int y = 0;       
            y = (y + (x * (10 ^ i)));
        }

        System.out.println (y) ;
    }
}

我没有看到任何问题,但Eclipse没有运行它。

3 个答案:

答案 0 :(得分:4)

为了将来参考,如果您说您有错误在此发布

这可以解决您的问题

public class dtb {
    public static void main(String[] args) {

        //You do not declare y;
        int y=0;

        while (num >= base){
            int x = (num%base);
            num = num/base;        
            y = (y + (x*(10^i)));   
        }    
        System.out.println(y);
    }
}

答案 1 :(得分:0)

您的代码格式很差,这使得问题很难看到:

while (num >= base){
        int x = (num % base);
        num = num/base;
        int y=0;         
        y = (y + (x*(10^i)));   }

 System.out.println (y) ;
}}

请注意,行末尾有一个结束括号,用于更改y

的值

如果您重新格式化代码,以便大括号位于各自的行上并且范围正确缩进:

    while (num >= base){
        int x = (num % base);
        num = num/base;
        int y=0;         
        y = (y + (x*(10^i))); 
     }

     System.out.println (y) ;
    }
}

您可以看到使用println的{​​{1}}来电超出了y变量的范围。

你可能想把印刷品放在里面,就像这样:

y

答案 2 :(得分:0)

因为你在while循环中声明y,所以你不能在它之外使用它。因此,当您尝试在之后打印y时,它会认为您尚未声明该变量。要解决这个问题,请在while循环之外移动y的初始声明,如下所示:

import java.util.Scanner;

public class dtb {
    public static void main(String[] args) {
        Scanner myscanner = new Scanner(System.in);
        int num = myscanner.nextInt();
        int base = myscanner.nextInt();
        int i = 0;
        int y = 0;
        while (num >= base) {
            int x = (num%base);
            num = num/base;
            y = (y + (x * ( 10^i )));
        }
        System.out.println(y);
    }
}

另外,良好的格式化有帮助。