功能: 输入一个数,这个数载的范围为(-10000,10000)。要求输出输入的这个数的读法。如果遇到负数,要在前面加上“fu”.
程序:
package readNumber;
import java.util.Scanner;
public class readNumber {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int count = in.nextInt();
int digit;
int sum=0;
int a=0;
String b=" ";
if( -10000<count && count<10000)
{
if(count<0)
{
System.out.print("fu ");
count=-count;
}
if(count==0)
{
System.out.print("ling");
}
if(count>0)
{
do
{
digit=count%10;
sum=sum*10+digit;
count=count/10;
}while( count!=0 );
//System.out.println(sum);
do
{
a=sum%10;
sum=sum/10;
switch (a)
{
case 1: b="yi";break;
case 2: b="er";break;
case 3: b="san";break;
case 4: b="si";break;
case 5: b="wu";break;
case 6: b="liu";break;
case 7: b="qi";break;
case 8: b="ba";break;
case 9: b="jiu";break;
case 0: b="ling";break;
}
if(sum!=0)
{
System.out.print(b+" ");
}
else if( sum==0)
{
System.out.print(b);
}
}while( sum!=0 );
}
}
else
{
System.out.println("input error");
}
}
}
- 1、这个函数首先是读入一个数字,之后再进行每位数分别为几的一个判断,之后再进行选择读法,然后输出。
- 2、在判断每位数为几的时候,使用的算法为
x=y%10;y=y/10;
这段代码可以读出每一位为几,使用y=0;
作为判断是否结束判断数字的标志。 - 3、在上述判断数字的两条代码中,首先输出的是个位,其次是百位,就是说这个顺序的是从右到左的。而我们读数的顺序是从左到右,所以我们需要将数字逆序输出。使用
digit=count%10;sum=sum*10+digit;count=count/10;
可将先得出的个位作为逆序这个数的第一部分,之后每循环一次得到的一位数,要先将上一部分乘以10在加上该数。等到循环结束,则每一部分相加所得到的值即为我们所需要的数。 - 4、既然我们得到了输入的数的逆序,此时我们将这个逆序进行每位数的判断,得到的结果为逆序的逆序,即为正序,此时即可进行选择和输出。