我是靠谱客的博主 甜蜜月光,最近开发中收集的这篇文章主要介绍a-z分别表示1-26的26进制 字符串和数字相互转换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目大概是这样的:

a-z分别代表1-26,输入数字不超过32位,字符最少一位,不超过6位
实现输入为字符串时,将其转成相应数字 如:ab-->28
输入为数字时,将其转成相应字符串 如:28-->ab

PS:感谢评论中的指正
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * a-z分别代表1-26
 * 输入数字不超过32位 字符不超过6位
 * 实现字符串转成相应数字 数字转成相应字符串
 *
 * @Author ycl
 */
public class Main {
    static Pattern pattern1 = Pattern.compile("^[0-9]{1,32}$");
    static Pattern pattern2 = Pattern.compile("^[a-z]{1,6}$");

    public static void main(String[] args) {
        System.out.println("请输入要转换的数字/英文字符串:");
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            String str = sc.nextLine();

            str = str.toLowerCase();

            Matcher matcher1 = pattern1.matcher(str);
            boolean b1 = matcher1.matches();

            Matcher matcher2 = pattern2.matcher(str);
            boolean b2 = matcher2.matches();

            if (b1) {
                //1表示输入为数字
                String result = covertTo26(str, 1);
                System.out.println("十进制数字【" + str + "】转为二十六进制,使用a-z字母表示为:" + result);
            } else if (b2) {
                //2表示输入为字母
                String result = covertTo26(str, 2);
                System.out.println("二十六进制字符串【" + str + "】转为十进制数字为:" + result);
            } else {
                System.out.println("格式非法");
            }
            System.out.println("请输入要转换的数字/英文字符串:");
        }
    }

    private static String covertTo26(String input, int flag) {
        String str = "abcdefghijklmnopqrstuvwxyz";
        StringBuilder sb = new StringBuilder();
        if (flag == 1) {
            //1表示输入为数字
            int inputNum = Integer.parseInt(input);
            int n = 0;
            while (inputNum != 0) {
                n = inputNum % 26;
                if (n == 0) {
                    n = 26;
                }
                sb.append(str.charAt(n - 1));
                inputNum = inputNum / 26;
                if (n == 26) {
                    inputNum --;
                }
            }
            return sb.reverse().toString();
        } else {
            int num = 0;
            int length = input.length();
            for (int i = 0; i < length; i++) {
                num += toPow(str.indexOf(input.charAt(i)) + 1, length - i - 1);
            }
            return num + "";
        }
    }

    private static int toPow(int num, int i) {
        for (int j = 1; j <= i; j++) {
            num *= 26;
        }
        return num;
    }
}

最后

以上就是甜蜜月光为你收集整理的a-z分别表示1-26的26进制 字符串和数字相互转换的全部内容,希望文章能够帮你解决a-z分别表示1-26的26进制 字符串和数字相互转换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部