0

こんにちは皆さん、制御構造を使用して数値を単語に変換する簡単なプログラムを作成しようとしていますが、プログラムが長くなりすぎています。もっと簡単に書く方法はありますか?たとえば、ユーザーが 123 と入力した場合、出力は 1 2 3 になります。私はそれを完成させませんでしたが、ここにサンプルがあります:

import java.util.Scanner;
public class Number10 {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    String num;

    System.out.print("Enter a number and i'll convert it to words: ");
    num = input.nextLine();

    if((num.length()) == 1)
    {
        switch(num)
        {
        case "0":
        {
            System.out.print("Zero");
            break;
        }
        case "1":
        {
            System.out.print("One");
            break;
        }
        case "2":
        {
            System.out.print("Two");
            break;
        }
        case "3":
        {
            System.out.print("Three");
            break;
        }
        case "4":
        {
            System.out.print("Four");
            break;
        }
        case "5":
        {
            System.out.print("Five");
            break;
        }
        case "6":
        {
            System.out.print("Six");
            break;
        }
        case "7":
        {
            System.out.print("Seven");
            break;
        }
        case "8":
        {
            System.out.print("Eight");
            break;
        }
        case "9":
        {
            System.out.print("Nine");
            break;
        }
        default:
        {
            System.out.print("Please enter a number");
            break;
        }
        }
 }
    else if((num.length()) == 2)
    {
        switch(num)
        {
        case "11":
        {
            System.out.print("One One");
            break;
        }
        case "12":
        {
            System.out.print("One Two");
            break;
        }
        case "13":
        {
            System.out.print("One Three");
            break;
        }
        case "14":
        {
            System.out.print("One Four");
            break;
        }
        case "15":
        {
            System.out.print("One Five");
            break;
        }
        case "16":
        {
            System.out.print("One Six");
            break;
        }
        case "17":
        {
            System.out.print("One Seven");
            break;
        }
        case "18":
        {
            System.out.print("One Eight");
            break;
        }
        case "19":
        {
            System.out.print("One Nine");
            break;
        }
        case "20":
        {
            System.out.print("Two Zero");
            break;
        }
        case "21":
        {
            System.out.print("Two One");
            break;
        }
        case "22":
        {
            System.out.print("Two Two");
            break;
        }
        case "23":
        {
            System.out.print("Two Three");
            break;
        }
        case "24":
        {
            System.out.print("Two Four");
            break;
        }

        default:
        {
            System.out.print("Please enter a number");
            break;
        }
        }
    }

    else
    {
        System.out.print("Invalid number");
    }

}

}

私を助けてください。ありがとう。

4

3 に答える 3

1

私はこれをします:

import java.util.Scanner;
public class Number10 {

private static String[] nums = new String[]
        {"Zero", "One", "Two", "Three", "Four",
         "Five", "Six", "Seven", "Eight", "Nine"};

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    String num;

    System.out.print("Enter a number and i'll convert it to words: ");
    num = input.nextLine();
    input.close()

    for (Character c: num.toCharArray())
        System.out.print(nums[Character.getNumericValue(c)]+ ' ');

}
于 2014-09-21T09:42:08.113 に答える
0

まず第一に、あなたは

java.util.Map<Integer, String>

文字列表現への整数値のマッピングを保持しますが、これはコードを短くするだけです。次のステップは、数字を数字で処理することです。そのため、数字から文字列表現へのマップを保持し、各数字の文字列表現を出力できます。

Map<Integer, String> numbers = new HashMap<Integer, String>();
numbers.put(0, "Zero");
// 22 = numbers.get(2) + " " + numbers.get(2);
// 51 = numbers.get(5) + " " + numbers.get(1);
// ...
于 2014-09-21T09:33:19.827 に答える