我有这个源代码:(这是我的功课)。创建一个程序,将数字从十进制转换为二进制。 我就快完成了。
package binek;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Binek {
public static void main(String[] args) {
String cislo;
int vypocet=1;
int zbytek=1;
int a=0;
BufferedReader in;
in = new BufferedReader(new InputStreamReader(System.in));
try{ cislo = in.readLine(); }
catch(IOException e) {cislo="";}
int dec=Integer.valueOf(cislo);
int[] pole = new int[10];
vypocet=dec/2;
zbytek=dec%2;
pole[0]=zbytek;
while(vypocet!=0){
a++;
zbytek=vypocet%2;
vypocet=vypocet/2;
pole[a]=zbytek;
}
for (int i = 9; i < pole.length; --i)
{
System.out.print (pole[i]);
} // here is the field with unnecessary zeros
}
}
答案 0 :(得分:2)
您的循环错误:您从数组的末尾开始并检查数组索引是否小于数组长度 - 它始终小于数组长度。所以你得到一个ArrayIndexOutOfBoundsException。这是纠正的循环,删除了前导零:
boolean leadingZeros = true;
for (int i = pole.length; i > 0; i--) {
if (leadingZeros && pole[i-1] == 0) continue; else leadingZeros = false;
System.out.print(pole[i-1]);
}
答案 1 :(得分:1)
我建议你使用Integer.toBinaryString(int),转换方法就像这样
public void convertToBinary(int decimal){
System.out.println("Decimal value is " + decimal);
System.out.println("Binary value is " + Integer.toBinaryString(decimal));
}
答案 2 :(得分:0)
for(i=polelength-1;i>=0;i--){
if(pole[i] != 0) break;
}
for(;i>=0;i--)
System.out.print(pole[i]);