Java中的数字到单词的转换 [英] Number to Word Conversion in Java

查看:39
本文介绍了Java中的数字到单词的转换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要上这堂课的作业,我遇到的问题是我对解决方案的想法过多.我必须创建一个将四位数的数字转换为单词的程序.

I have this homework assignment for this class I'm retaking, the problem I'm running into is that I'm over-thinking the solution. I have to create a program that converts a four digit number to words.

(例如:1134变成一一三四")

(Example: 1134 becomes "One One Three Four")

我有一个基本代码,但是它又笨重又丑陋.我也只允许使用基本的if和switch语句,我们也必须使用switch语句.

I have a basic code, but it's bulky and ugly. I'm also only allowed to use basic if and switch statements, we have to use a switch statement as well.

我是否在考虑这个问题?我无法弄清楚如何使这段代码更短,而我只想使用一个switch语句而不使用while循环.甚至有可能吗?还是这么短.

Am I over thinking this? I can't figure out how to make this code shorter and I only want to use one switch statement without a while loop. Is it even possible or is this as short as it gets.

这是我的代码.

import java.util.Scanner;

public class NumberToWords {

	public static void main(String[] args) {
		//Set up scanner.
		Scanner kb = new Scanner(System.in);
		
		//Ask for a 4 digit integer.
		System.out.println("Enter a 4 digit number.");
		
		//Store 4 digit number into a variable
		int number = kb.nextInt();
		
		//Seperate number into digits.
		int digit4 = number%10;
		number = number/10;
		int digit3 = number%10;
		number = number/10;
		int digit2 = number%10;
		number = number/10;
		int digit1 = number%10;
		number = number/10;
		
		//Set up a switch statement to read through the number.
		switch (digit1)
		{
		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;
		case 0: System.out.print("Zero "); break;
		default: System.out.print(""); break;
		}
		switch (digit2)
		{
		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;
		case 0: System.out.print("Zero "); break;
		default: System.out.print(""); break;
		}
		switch (digit3)
		{
		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;
		case 0: System.out.print("Zero "); break;
		default: System.out.print(""); break;
		}
		switch (digit4)
		{
		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;
		case 0: System.out.print("Zero "); break;
		default: System.out.print(""); break;
		}
	}

}

推荐答案

首先,编写一种将一位数字转换为单词的方法.像

First, write a method to convert a single digit to a word. Something like,

private static String digitToWord(char ch) {
    switch(ch) {    
    case '0': return "Zero";
    case '1': return "One";
    case '2': return "Two";
    case '3': return "Three";
    case '4': return "Four";
    case '5': return "Five";
    case '6': return "Six";
    case '7': return "Seven";
    case '8': return "Eight";
    case '9': return "Nine";
    }
    return "Unknown (" + ch + ")";
}

然后,您可以获取 int String 值.然后从该 String 中获取四个字符.像

Then you can get the String value of your int. And get the four characters from that String. Something like,

int number = kb.nextInt();
String str = String.format("%04d", number);
StringBuilder sb = new StringBuilder();
sb.append(digitToWord(str.charAt(0)).append(' ');
sb.append(digitToWord(str.charAt(1)).append(' ');
sb.append(digitToWord(str.charAt(2)).append(' ');
sb.append(digitToWord(str.charAt(3));
System.out.println(sb.toString());

或者,

String str = String.format("%04d", kb.nextInt());
System.out.printf("%s %s %s %s%n", digitToWord(str.charAt(0)), 
    digitToWord(str.charAt(1)), digitToWord(str.charAt(2)),
    digitToWord(str.charAt(3)));

这篇关于Java中的数字到单词的转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆