蓝桥:数的读法2

蓝桥:数的读法2

知识点

java.lang.StringBuilder类的常用方法
①append方法:将信息追加到当前StringBuilder的结尾
StringBuilder sb=new StringBuilder(“abc”);
sb.append(“123”);
System.out.println(sb);
输出:abc123

②insert方法:将字符串或对象插入到当前StringBuilder对象的指定索引处
StringBuilder sb=new StringBuilder(“abc”);
sb.insert(2,“123”);
System.out.println(sb);
输出:ab123c

③delete方法:删除指定开始索引到结束索引处的字符
StringBuilder sb=new StringBuilder(“abc”);
sb.delete(1,3);//删除从索引1到3的字符
System.out.println(sb);
输出:a

④length方法:输出字符串的长度
StringBuilder sb=new StringBuilder(“abc”);
System.out.println(sb.length());
输出:3

⑤reverse方法:实现字符串的反转
StringBuilder sb=new StringBuilder(“abc”);
sb.reverse();
String s=sb.toString();//可不写,会自动转换
System.out.println(s);
输出:cba
————————————————
版权声明:本文为CSDN博主「NANCYGOODENOUGH」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40723205/article/details/79355921

BufferedInputStream 类
Java BufferedInputStream Class

Java BufferedInputStream class 用于从输入流读取数据,和BufferedOutStream一样内部使用缓冲机制提高读取性能。

需要注意的是:

当读取流中字节时,内部缓冲区每次会自动重新填满多个字节。
当一个缓冲输入流创建时,一个内部缓冲区数组也会创建。
————————————————
版权声明:本文为CSDN博主「罗汉爷」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/IndexMan/article/details/78948226

我觉得这个代码太麻烦了,还是好好理解上面那个代码

import java.io.BufferedInputStream;
import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        String[] npin = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
        String[] wpin = {"null", "wan", "yi"};
        Scanner scanner = new Scanner(new BufferedInputStream(System.in));
        StringBuilder nStr = new StringBuilder(scanner.nextLine());
        nStr = nStr.reverse();
        String[] res = new String[27];
        for(int i = 0; i < 27; i++)
            res[i] = "null";

        int ires = 0;
        for(int i = 0; i < nStr.length(); i+=4) {
            res[ires++] = wpin[i/4];

            //个位
            if(!(nStr.charAt(i) == '0' && nStr.charAt(i+1) != '!'))
                res[ires++] = npin[nStr.charAt(i)-'0'];
            else
                res[ires++] = "null";

            //十位
            if(i+1 >= nStr.length())
                break;
            else if(nStr.charAt(i+1) == '1' && (i+2 >= nStr.length() || i+2 < nStr.length() && nStr.charAt(i+2) != '0')) {
                res[ires++] = "shi";
                res[ires++] = "null";
            }
            else if(nStr.charAt(i+1) == '0') {
                res[ires++] = "ling";
                res[ires++] = "null";
            }
            else {
                res[ires++] = "shi";
                res[ires++] = npin[nStr.charAt(i+1)-'0'];
            }

            //百位
            if(i+2 >= nStr.length())
                break;
            else if(nStr.charAt(i+2) == '0') {
                res[ires++] = "ling";
                res[ires++] = "null";
            }
            else {
                res[ires++] = "bai";
                res[ires++] = npin[nStr.charAt(i+2)-'0'];
            }

            //千位
            if(i+3 >= nStr.length())
                break;
            else if(nStr.charAt(i+3) == '0') {
                res[ires++] = "ling";
                res[ires++] = "null";
            }
            else {
                res[ires++] = "qian";
                res[ires++] = npin[nStr.charAt(i+3)-'0'];
            }
        }
        String pre = "null";
        for(int i = 0; i < 27; i+=9)
            for(int j = i; j < i + 9; j ++)
                if(res[j].equals("ling") || res[j].equals("null"))
                    res[j] = "null";
                else
                    break;
        for(int i = 23; i >= 0; i--)
            if(!res[i].equals("null")) {
                if(pre.equals("ling") && res[i].equals("ling")) {
                    continue;
                }
                else {
                    System.out.print(res[i] + " ");
                    pre = res[i];
                }
            }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向上Claire

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值