我需要帮助。我有个任务要做转换器。
1)能够将十进制数转换为二进制数的代码。(结果应再次转换为十进制数)
( 2)能将十进制数转换成八进制的码。(结果应再次转换为十进制数)
3)能够将十进制数转换为十六进制的代码。(结果应再次转换为十进制数)
任务禁止编写两个单转换器,例如:一个用于十进制->二进制转换器,另一个用于二进制->十进制转换器。,它应该是每个任务的一个转换器:从十进制到->二进制,然后从二进制、->、十进制等转换结果。用户应该能够输入数字(结果除外)。
我为第一项任务编写了代码,但它不能正常工作
package javalearn;
import java.util.Scanner;
public class DecimalToBinary {
public static void DecimalToBinary() {
Scanner in = new Scanner(System.in);
int decimal = 0, n = 0;
int num, i, var = 0;
int[] intArray;
intArray = new int[10];
System.out.println("Enter your decimal number: ");
num = in.nextInt();
for (i = 0; num > 0; i++) {
intArray[i] = num % 2;
num = num / 2;
}
System.out.println("Converted decimal number into binary: ");
for (i = i - 1; i >= 0; i--) {
System.out.print(intArray[i]);
}
System.out.println();
// Next
while (true) {
if (intArray[i] == 0) {
break;
} else {
int temp = intArray[i] % 10;
decimal += temp * Math.pow(2, n);
intArray[i] = intArray[i] / 10;
n++;
}
}
System.out.println(intArray[i]);
}发布于 2018-09-16 10:42:17
您将得到一个ArrayIndexOutOfBoundsException,因为在第二个for条件下,将i计数为-1,然后在down循环if(intArray[i] == 0)中再次使用它。您可以使用一个临时变量来保留i值,并在计数后将其赋值给i。
有些像:
int temp = i;
for(...){
....
}
i = temp;
while(true){
...
}祝你的作业顺利。
https://stackoverflow.com/questions/52352950
复制相似问题