public static void main(String [] args){
byte bin[] = new byte[255];
int a;
System.out.print("Enter Number: ");
System.in.read(bin);
Integer val= Integer.parseInt(new String(bin).trim());
for(a=1; val >= 0;a++){
bin[a] = val%2;
val = val/2;
}
System.out.println("Binary: ");
for(int i = a-1;i >= 0;i--){
System.out.print(bin[i]);
}
你好!这是我的第一个问题。我对Java进行了一些探索,最近我对此很感兴趣。说实话,我是Java的初学者!
使用for,这是我从其他来源获得的解决方案,但是这里的问题是错误,我一直在思索高低,但仍然无法删除“错误:不兼容的类型:可能从有损到字节的有损转换从第[12]行开始,包括类声明和结束类“}”。哦!我正在使用DrJava。
这个程序有问题吗?
您正在试图bin[a] = val%2;
在那里val
整数类型,bin[a]
是字节型。byte是8位,其中Integer是32位。您试图在8位存储器上输入32位值。这就是为什么它会给出不兼容的类型错误。
您的代码中存在一些问题。修复它们后,它可以工作:
byte bin[] = new byte[255];
int a;
System.out.print("Enter Number: ");
System.in.read(bin);
Integer val= Integer.parseInt(new String(bin).trim());
Integer temp = val; // keep val intact if you want to print it later
// Not temp >= 0, it'll run infinite. Also a=0, because later you are printing upto 0
for (a = 0; temp > 0; a++) {
// temp % 2 returns int which doesn't support byte casting
bin[a] = new Integer(temp % 2).byteValue();
temp = temp / 2;
}
// print binary number
System.out.print("Binary of " + val + " is = ");
for (int i = a - 1; i >= 0; i--) {
System.out.print(bin[i]);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句