你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。
如输入1234,则输出:
yi er san si
注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。当遇到负数时,在输出的开头加上“fu”,如-2341输出为:
fu er san si yi
这个程序我费了好久,并且参考了以前写的东西才写出来的,不容易啊。
分解成很多小程序,分别如下
1 求输入单个数字时输出它所对应的汉语拼音。
switch (s) {
case 0: {
System.out.print("ling");
break;
}
case 1: {
System.out.print("yi");
break;
}
case 2: {
System.out.print("er");
break;
}
case 3: {
System.out.print("san");
break;
}
case 4: {
System.out.print("si");
break;
}
case 5: {
System.out.print("wu");
break;
}
case 6: {
System.out.print("liu");
break;
}
case 7: {
System.out.print("qi");
break;
}
case 8: {
System.out.print("ba");
break;
}
case 9: {
System.out.print("jiu");
break;
}
}
2 范围是[-100000,100000]可以写一个if语句来把负数的处理一下
if (n < 0) {
System.out.print("fu"+" ");
n = -n;
}
3 分离大的数据 比如说是1234,把他分成 1 2 3 4为了正向输出,必须先算出模
//求模
int t = n;
int mode = 1;
while (t > 9) {
mode *= 10;
t /= 10;
}
//分离数字 s = n / mode; n = n % mode;//必须处理n,否则就只能进行一次 mode /= 10;
做完这些工作就差不多了,只需要好好处理一下空格,但是也挺麻烦的,位置很重要,之前我在数字之后加空格,每个数最后一个数字都多了一个空格,注意插入空格应该在数据每个数的后面,然后最后一个数字时需要,插入条件应该把最后一个字母给pass掉。
完整代码如下:
package ReadInteger;
import java.util.Scanner;
public class ReadInteger {
public static void main(String[] args) {
System.out.println("请输入数据:");
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int s = 0;
//处理负数
if (n < 0) {
System.out.print("fu"+" ");
n = -n;
}
//求模
int t = n;
int mode = 1;
while (t > 9) {
mode *= 10;
t /= 10;
}
if (n <= 1000000 && n >= 0) {
while (mode > 0) {
//分离数字
s = n / mode;
n = n % mode;//必须处理n,否则就只能进行一次
mode /= 10;
switch (s) {
case 0: {
System.out.print("ling");
break;
}
case 1: {
System.out.print("yi");
break;
}
case 2: {
System.out.print("er");
break;
}
case 3: {
System.out.print("san");
break;
}
case 4: {
System.out.print("si");
break;
}
case 5: {
System.out.print("wu");
break;
}
case 6: {
System.out.print("liu");
break;
}
case 7: {
System.out.print("qi");
break;
}
case 8: {
System.out.print("ba");
break;
}
case 9: {
System.out.print("jiu");
break;
}
}
if(mode>0){
System.out.print(" ");}
}
}
}
}
今天组会开了好久,中午又没休息好,整个人昏昏的,漂亮啊,明天过了就在实验室午休吧,说到做到!!!



