蓝桥:数的读法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];
}
}
}
}