念整數——mooc《零基礎學Java語言》-(浙大翁凱)第四周編程題(2)


問題描述:

你的程序要讀入一個整數,范圍是[-100000,100000]。然后,用漢語拼音將這個整數的每一位輸出出來。

如輸入1234,則輸出:

yi er san si

注意,每個字的拼音之間有一個空格,但是最后的字后面沒有空格。當遇到負數時,在輸出的開頭加上“fu”,如-2341輸出為:

fu er san si yi

 

輸入格式:

一個整數,范圍是[-100000,100000]。

 

輸出格式:

表示這個整數的每一位數字的漢語拼音,每一位數字的拼音之間以空格分隔,末尾沒有空格。

 

輸入樣例:

-30

 

輸出樣例:

fu san ling

時間限制:500ms內存限制:32000kb
 
錯誤代碼實現:
因為老師在授課過程中講過如何將一個數逆序輸出,所以一開始我想到的就是將輸入的數逆序,然后再循環取這個逆序數的個位數進行念整數操作。思路上感覺可行,但是卻忽略了極端情況,比如數字1230,對其逆序時數字為321,0卻消失了,因此再mooc上測試時有兩個用例未通過。
 
import java.util.Scanner;

public class 念整數
{

    public static void main(String[] args) 
    {
        // TODO Auto-generated method stub
        Scanner in=new Scanner(System.in);
        int number=in.nextInt();
        if(number==0) 
        {
            System.out.print("ling");
        }
        if(number<0) 
        {
            System.out.print("fu ");
            number=-number;
        }
        int temp=number;
        int result=0;
        do
        {
            int digit=temp%10;
            temp=temp/10;
            result=result*10+digit;
        }while(temp!=0);
//        System.out.println(result);
        do 
        {
            int digit=temp%10;
            temp=temp/10;
            result=result*10+digit;
        }while(temp!=0);
//        System.out.println(result);
        do 
        {
                int digit1=result%10;
                result=result/10;
                switch(digit1) 
                {
                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(result>0) 
            {
                System.out.print(" ");
            }
        }while(result!=0);

    }

}

改進代碼:

import java.util.Scanner;

public class 念整數改進 
{

    public static void main(String[] args)
    {
        // TODO Auto-generated method stub
        Scanner in=new Scanner(System.in);
        int cnt=0;
        int temp=0;
        double p=0.0;
        int number=in.nextInt();
        if(number==0) //數字為0時
        {
            System.out.print("ling");
        }
        if(number<0) //數字為負時先輸出fu 
        {
            System.out.print("fu ");
            number=-number;//將負值轉換為絕對值
        }
        temp=number;
        while(temp>0) 
        {
            temp/=10;
            cnt++;
        }
        while(cnt>0)
        {
            p=Math.pow(10,--cnt);//循環的條件,p等於10的cnt次方
            int first=number/(int)p;
            number=number%(int)p;
            switch(first) 
            {
            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(cnt>0) 
            {
                System.out.print(" ");
            }
        }

    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM