2014-10-18 2 views
1

사용자가 선택 항목으로 입력 한 숫자를 인쇄 줄에서 선택한 실제 의미있는 문자열로 바꾸려면 어떻게합니까? 내 코드는 더 길지만 그 코드를 다듬어야했습니다.사용자가 입력 한 정수를 해당 문자열로 대체하는 방법

import java.util.Scanner; 

public class MagicGame 
{ 
    public static void main(String [] args) 

    { 

    String name; 
    int userCharacter; 
    int armorChoice; 
    int weaponChoice; 


    Scanner input = new Scanner(System.in); 

    System.out.println("Please enter your name"); 
    name = input.nextLine(); 
    { 
    System.out.println("Please select the character you would like to play:" + '\n' + "1 for Magic User" + '\n' + "2 for Fighter" + '\n' + "3 for Thief" + '\n' + "4 for Druid"); 
    userCharacter = input.nextInt(); 

    System.out.println("Please select your Armor Type:" + '\n' + "1 for Steel plate – Armor Class 10" + '\n' + "2 for Chain mail – Armor Class 5" + '\n' + "3 for Leather armor – Armor Class 3" + '\n' + "4 for A robe – Armor Class 1"); 
    armorChoice = input.nextInt(); 

    System.out.println("Please choose a Weapon:" + '\n' + "1 for Sword" + '\n' + "2 for Short Sword" + '\n' + "3 for Scimitar" + '\n' + "4 for Dagger"); 
    weaponChoice = input.nextInt(); 


    System.out.println("Hello " + name + "! You chose to play a " + userCharacter + "." + '\n' + "Your armor is" + armorChoice + "." + '\n' + "You will be fighting with a " + weaponChoice + "."); 
    } 
} 

이들은 1 ~ 4 개의 번호가 매겨진 3 개의 그룹으로되어 있지만 서식은 계속 변경됩니다.

  1. 매직 사용자
  2. 파이터
  3. 도둑
  4. 드루이드

  5. 강판 - 방어도 10

  6. 체인 메일 - 방어도 5
  7. 가죽 갑옷 - 방어도 3
  8. 가운 - 방어도 1

  9. 짧은 칼
  10. 초승달처럼 굽은 칼
  11. 대거
+0

당신이 'System.in'의 내용을 바꾸려고한다는 것을 의미합니까 – SamTebbs33

+0

이 경우 최상의 해결책은 enum입니다. – m0skit0

답변

1

지도는 다음과 같이 값을 저장하기에 좋다. 예를 들어

이 코드 :

You are: Mage 

당신은 너무 반복에 대해지도를 사용할 수 있습니다 :

System.out.println("Please select the character you would like to play:"); 
    for (Entry<Integer, String> character : characters.entrySet()) { 
     System.out.println(character.getKey() + ": " + character.getValue()); 
    } 

이 출력을 가지고 :

int playerCharacter; 

    Map<Integer, String> characters = new HashMap<Integer, String>(); 
    characters.put(1, "Fighter"); 
    characters.put(2, "Mage"); 
    characters.put(3, "Rogue");   

    playerCharacter = 2; //This is what you get from input 

    System.out.println("You are: " + characters.get(playerCharacter)); 

이 출력이

Please select the character you would like to play: 
1: Fighter 
2: Mage 
3: Rogue 
+0

연속적인 정수로 구성된 맵은 List 과 동일합니다. 또한 값의 제한된 집합은 실제로 "enum"*이라고 비명을 지른다. :) – m0skit0

+0

@ m0skit0 - 자바에서는 생성자가있는 enum이 초보자에게는 매우 어렵다. 그리고 그는 숫자와 문자열 사이의 관계가 필요합니다. – libik

+0

덕분에 @libik, 그 작품 – John

관련 문제