题目:设计程序实现 八进制,二进制,十进制 之间的相互转换
import java.util.Scanner;
public class Test {
public static void main(String args[]) {
System.out.print("输入转换要求(x进制->y进制,用空格隔开): ");
Scanner scan0 = new Scanner(System.in);
int x = scan0.nextInt();
int y = scan0.nextInt();
System.out.print("输入一个" + x + "进制数: ");
Scanner scan1 = new Scanner(System.in);
int n = scan1.nextInt();
if (x == 2 && y == 10) {
System.out.print(x + " 进制数 " + n + " 转换为" + y + "进制为 " + convertBinaryToDecimal(n));
return;
} else if (x == 10 && y == 2) {
System.out.print(x + " 进制数 " + n + " 转换为" + y + "进制为 " + convertDecimalToBinary(n));
return;
} else if (x == 2 && y == 8) {
System.out.print(x + " 进制数 " + n + " 转换为" + y + "进制为 " + convertBinarytoOctal(n));
return;
} else if (x == 8 && y == 2) {
System.out.print(x + " 进制数 " + n + " 转换为" + y + "进制为 " + convertOctalToBinary(n));
return;
} else if (x == 8 && y == 10) {
System.out.print(x + " 进制数 " + n + " 转换为" + y + "进制为 " + convertOctalToDecimal(n));
return;
} else if (x == 10 && y == 8) {
System.out.print(x + " 进制数 " + n + " 转换为" + y + "进制为 " + convertDecimalToOctal(n));
return;
} else {
System.out.print("不支持的类型!");
return;
}
}
//二进制转十进制
public static int convertBinaryToDecimal(int n) {
int decimalNumber = 0, i = 0, remainder;
while (n != 0) {
remainder = n % 10;
n /= 10;
decimalNumber += remainder * Math.pow(2, i);
++i;
}
return decimalNumber;
}
//十进制转二进制
public static int convertDecimalToBinary(int n) {
int binaryNumber = 0;
int remainder, i = 1;
while (n != 0) {
remainder = n % 2;
n /= 2;
binaryNumber += remainder * i;
i *= 10;
}
return binaryNumber;
}
//二进制转八进制
public static int convertBinarytoOctal(int n) {
int octalNumber = 0, decimalNumber = 0, i = 0;
while (n != 0) {
decimalNumber += (n % 10) * Math.pow(2, i);
++i;
n /= 10;
}
i = 1;
while (decimalNumber != 0) {
octalNumber += (decimalNumber % 8) * i;
decimalNumber /= 8;
i *= 10;
}
return octalNumber;
}
//八进制转二进制
public static int convertOctalToBinary(int n) {
int decimalNumber = 0, i = 0;
int binaryNumber = 0;
while (n != 0) {
decimalNumber += (n % 10) * Math.pow(8, i);
++i;
n /= 10;
}
i = 1;
while (decimalNumber != 0) {
binaryNumber += (decimalNumber % 2) * i;
decimalNumber /= 2;
i *= 10;
}
return binaryNumber;
}
//八进制转十进制
public static int convertOctalToDecimal(int n) {
int decimalNumber = 0, i = 0;
while(n != 0)
{
decimalNumber += (n%10) * Math.pow(8,i);
++i;
n/=10;
}
i = 1;
return decimalNumber;
}
//十进制转八进制
public static int convertDecimalToOctal(int n) {
int octalNumber = 0, i = 1;
while (n != 0) {
octalNumber += (n % 8) * i;
n /= 8;
i *= 10;
}
return octalNumber;
}
}