Java中的进制转换

Java中的进制转换

  • [十进制 -> R进制](#十进制 -> R进制)
  • [R进制 -> 十进制](#R进制 -> 十进制)
  • [A进制 -> B 进制](#A进制 -> B 进制)
  • [例题1(FROM 洛谷 B3619)](#例题1(FROM 洛谷 B3619))
  • [例题2(FROM 洛谷 P2084)](#例题2(FROM 洛谷 P2084))
  • [拓展 ------ split() 函数](#拓展 —— split() 函数)

十进制 -> R进制

  • 步骤:(用 while 循环实现)
    1.不断用十进制数 N 除以 R
    2.记录每次的余数(可以用 StringBuilder,自带翻转函数)
    3.N 为 0 时退出循环
    4.将结果倒序输出

R进制 -> 十进制

  • 步骤 :(按权展开)
    1.不断取 R 进制数 M 的最后一位
    2.和 Rx 相乘之后累和
    3.M 为 0 时退出循环
    4.输出累和结果

A进制 -> B 进制

先将 A 进制转十进制,再将十进制转 B 进制

例题1(FROM 洛谷 B3619)

注意是B3619不是P

代码实现

java 复制代码
import java.util.*;
public class Main{
    public static void main(String [] args){
        Scanner input = new Scanner (System.in);
        int n = input.nextInt();
        int x = input.nextInt();
        StringBuilder sb = new StringBuilder();
        char ss = '0';
        while(n > 0){
            int s = n % x;
            if(s >= 10)
                ss = (char) (s-10 + 'A');
            else ss = (char)(s+'0');
            sb.append(ss);
            n /= x;
        }
        System.out.print(sb.reverse().toString());
    }
}

例题2(FROM 洛谷 P2084)

join() 函数

  • 传入的参数必须是字符串类型 的,可以是动态字符串数组,也可以直接传字符串,返回一个字符串。比如: System.out.print(String.join("+",list));String result = String.join("-", "2026", "04", "02"); ,但是要注意的是,list数组中不可以有空(NULL)。如果想传入其他类型参数,可以先转为字符串数组,再使用。

代码实现

java 复制代码
import java.util.*;
public class Main{
    public static void main(String [] args){
        Scanner input = new Scanner (System.in);
        int m = input.nextInt();
        String n = input.next();
        List<String>list = new ArrayList<>();
        for(int i=0;i<n.length();i++){
            char s = n.charAt(i);
            if(s != '0'){
               int index = n.length()-1-i;
                list.add((s-'0')+"*"+ m +"^"+index);
        }
    }
        System.out.print(String.join("+",list));
  }  
}

拓展 ------ split() 函数

这个函数也属于String类,也很有用,想起来就在这讲一下吧。

split() 函数的作用是:将一个字符串按照指定的分隔符(正则表达式)切分成多个子字符串,并返回一个字符串数组。

  1. 只指定分隔符(正则表达式):public String[] split(String regex)
  2. 指定分隔符 + 最大分割次数:public String[] split(String regex, int limit)

其中 regex 是正则表达式,不是普通字符串。. 、*、+、?、|、(、)、[、]、{、} 等在正则中有特殊含义,必须用 \ 转义才能当作普通字符使用。

比如:

java 复制代码
// 错误 ❌:. 在正则中表示"任意字符"
String ip = "192.168.1.1";
String[] bad = ip.split("."); // 返回空数组!

// 正确 ✅:需要转义
String[] parts = ip.split("\\.");
// 或使用字符类
String[] parts = ip.split("[.]");
// 结果: ["192", "168", "1", "1"]

其中 limit 的值也代表不同意思,了解既可,感觉竞赛用的不是很多。

limit 值 行为
> 0 最多分割成 limit 段,保留尾部空字符串
= 0 分割所有可能部分,自动去除尾部空字符串(默认行为)
< 0 分割所有可能部分,保留所有空字符串(包括尾部)
相关推荐
码界筑梦坊18 分钟前
302-基于Python的安卓应用市场数据可视化分析推荐系统
开发语言·python·信息可视化·毕业设计·fastapi
LiLiYuan.33 分钟前
【Java 6种线程状态】
java·开发语言
加号31 小时前
【C#】 WebAPI 接口设计与实现指南
开发语言·c#
lly2024061 小时前
jQuery 删除元素详解
开发语言
itzixiao1 小时前
L1-047 装睡 (5分)[java][python]
java·开发语言·python
林恒smileZAZ1 小时前
Three.js实现更真实的3D地球[特殊字符]动态昼夜交替
开发语言·javascript·3d
用户298698530141 小时前
不用无头浏览器,Java 如何将 HTML 转成图片?
java·后端
Chengbei112 小时前
红队专属Bing Dork自动化工具,敏感信息侦察效率拉满、自动生成可视化信息泄露审计报告
java·人工智能·安全·web安全·网络安全·自动化·系统安全
敖正炀2 小时前
集合-Set深入解析
java
|_⊙2 小时前
C++ 智能指针
开发语言·c++