编程教育资源分享平台

网站首页 > 后端开发 正文

用Java 实现自定义进制转换的几种方法

luoriw 2023-10-19 15:09:22 后端开发 34 ℃ 0 评论

在 Java 中,你可以使用栈来实现进制转换。栈是一种数据结构,其中数据是按照 “后进先出”(Last In, First Out)的顺序排列的。

第一种:使用栈实现进制转换的示例代码:

import java.util.Scanner;
import java.util.Stack;
/*
使用栈实现进制转换的示例代码
 */
public class BaseConversion {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个数字: ");
        int num = scanner.nextInt();
        System.out.print("请输入需要转换的进制: ");
        int base = scanner.nextInt();

        Stack<Integer> stack = new Stack<>();
        while (num > 0) {
            int rem = num % base;
            stack.push(rem);
            num = num / base;
        }
        System.out.print("转换后的结果是:");
        while (!stack.isEmpty()) {
            System.out.print(stack.pop());
        }
    }
}

在上面的代码中,我们首先将输入的数字 num 和要转换的进制 base 作为参数传入函数。然后,我们使用一个循环来不断地将 num 除以 base,并将余数压入栈中。最后,我们使用另一个循环来将栈中的数字逐一弹出,并输出。

在这个示例中结果:

输出结果


第二种:使用递归。你可以通过不断地递归地调用函数来实现进制转换。例如,下面是使用递归实现进制转换的示例代码:

import java.util.Scanner;
/*
    实现进制转换的示例代码
 */
public class BaseConversion {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个数字: ");
        int num = scanner.nextInt();
        System.out.print("请输入需要转换的进制: ");
        int base = scanner.nextInt();
        System.out.print("转换后的结果是:");
        System.out.println(convert(num, base));
    }

    public static String convert(int num, int base) {
        StringBuilder sb = new StringBuilder();
        if (num > 0) {
            sb.append(convert(num / base, base));
            sb.append(num % base);
        }
        return sb.toString();
    }

}

第三种:常见的方法是使用数学方法来实现进制转换。你可以使用模运算(%)来获取数字的余数,然后使用除法运算(/)来获取数字的商。例如,下面是使用数学方法实现进制转换的示例代码:

import java.util.Scanner;
/*
    实现进制转换的示例代码
 */
public class BaseConversion {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个数字: ");
        int num = scanner.nextInt();
        System.out.print("请输入需要转换的进制: ");
        int base = scanner.nextInt();
        System.out.print("转换后的结果是:");
        System.out.println(convert(num, base));
        convert(num, base);
    }

    private static String convert(int num, int base) {
        StringBuilder sb = new StringBuilder();
        while (num > 0) {
            sb.append(num % base);
            num = num / base;
        }
        String result = sb.reverse().toString();
       return result;
    }

}

总结一下上面提到的三种方法:

  1. 使用栈实现进制转换:在这种方法中,我们使用栈来存储转换后的数字。首先,我们将输入的数字除以要转换的进制,并将余数压入栈中。使用另一个循环来将栈中的数字逐一弹出,并输出。
  2. 使用递归实现进制转换:在这种方法中,我们使用递归来实现进制转换。我们调用函数时,不断地将输入的数字除以要转换的进制,并将余数添加到字符串中。将字符串反转并输出。
  3. 使用数学方法实现进制转换:在这种方法中,我们使用模运算和除法运算来实现进制转换。我们不断地将输入的数字除以要转换的进制,并将余数添加到字符串中。将字符串反转并输出。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表