「Java学习打卡」22、程序设计 八进制、二进制与十进制的转换

题目:设计程序实现 八进制,二进制,十进制 之间的相互转换

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;
    }
}
发布了30 篇原创文章 · 获赞 0 · 访问量 451

猜你喜欢

转载自blog.csdn.net/qq_26959737/article/details/104934278
今日推荐