2020/6/30
问题
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。
输出格式:
在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。
遇到的错误
1. int cannot be dereferenced
2. 数组[i]直接和数字进行比较,编译错误
解决
1. int型没有split方法,String型拥有split方法。int基本数据类型无法加 "."
2. 将数组[i]进行一下Integer.parseInt转换
java代码1.0
import java.util.*;
import java.lang.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String numb=sc.nextLine();
String[] number=numb.split("");
int sum=0;
//String[] str={"yi","er","san","si","wu","liu","qi","ba","jiu","ling"};
for(int i=0;i<number.length;i++){
String a=number[i];
sum+=Integer.parseInt(a);
}
String result=sum+"";
String[] num=result.split("");
for(int i=0;i<num.length-1;i++){
int tmp=Integer.parseInt(num[i]);
if(tmp==1){
System.out.print("yi ");
}else if(tmp==2){
System.out.print("er ");
}else if(tmp==3){
System.out.print("san ");
}else if(tmp==4){
System.out.print("si ");
}else if(tmp==5){
System.out.print("wu ");
}else if(tmp==6){
System.out.print("liu ");
}else if(tmp==7){
System.out.print("qi ");
}else if(tmp==8){
System.out.print("ba ");
}else if(tmp==9){
System.out.print("jiu ");
}else if(tmp==0){
System.out.print("ling ");
}else{
System.out.println("error");
}
}
int tmp=Integer.parseInt(num[num.length-1]);
if(tmp==1){
System.out.print("yi");
}else if(tmp==2){
System.out.print("er");
}else if(tmp==3){
System.out.print("san");
}else if(tmp==4){
System.out.print("si");
}else if(tmp==5){
System.out.print("wu");
}else if(tmp==6){
System.out.print("liu");
}else if(tmp==7){
System.out.print("qi");
}else if(tmp==8){
System.out.print("ba");
}else if(tmp==9){
System.out.print("jiu");
}else if(tmp==0){
System.out.print("ling");
}else{
System.out.println("error");
}
}
}
注意
1.0版本包含过多String,int之间的转换,代码冗余,运行时间长
java代码2.0
新知识点
s.charAt(i)-'0'得到s[i]中存储的数字字符转化为数字,如:‘1’-‘0’=1
将sum转化作为str数字字符下标
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String number=sc.nextLine();
int sum=0;
for(int i=0;i<number.length();i++){
sum+=number.charAt(i)-'0';
}
String[] str={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
String temp=String.valueOf(sum);
for(int i=0;i<temp.length();i++){
sum=temp.charAt(i)-'0';
if(i!=0)
System.out.print(" ");
System.out.print(str[sum]);
}
}
}