2014-09-21 4 views
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"); 
    } 

} 

}

저를 도와주십시오. 감사. 모든

답변

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); 
// ... 
0

그것은 HashMap<Integer,String>이 작업을 수행하는 것이 훨씬 낫다. 이것은 더 깔끔한 코드와 유연성을 제공합니다. 예를 들어 다른 언어의 기능을 추가하려는 경우에도 마찬가지입니다.

아마도 파일에서 HashMap을 .put()으로 채우기 위해 루프를 사용하십시오. 그런 다음 .get()을 사용하여 번역을 검색하십시오.

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)]+ ' '); 

}