我想在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没有运行它。
答案 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);
}
}
另外,良好的格式化有帮助。