PRELOADER

不念过去 不负现在 不畏将来

当前文章 : 《读数字》

12/4/2018 —— 

功能: 输入一个数,这个数载的范围为(-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、既然我们得到了输入的数的逆序,此时我们将这个逆序进行每位数的判断,得到的结果为逆序的逆序,即为正序,此时即可进行选择和输出。