Java 如何用相应的字符串替换用户输入的整数

Java 如何用相应的字符串替换用户输入的整数,java,Java,如何将用户输入的数字替换为打印行中用户选择的实际对应字符串。我的代码较长,但我不得不将其删减 import java.util.Scanner; public class MagicGame { public static void main(String [] args) { String name; int userCharacter; int armorChoice; int weaponChoice; Scanner input

如何将用户输入的数字替换为打印行中用户选择的实际对应字符串。我的代码较长,但我不得不将其删减

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,但格式不断变化

  • 魔术师
  • 斗士
  • 盗贼
  • 德鲁伊

  • 钢板-装甲等级10

  • 链甲-5级装甲
  • 皮革装甲-装甲等级3
  • 长袍-装甲等级1

  • 短剑
  • 弯刀
  • 匕首

  • Map很适合存储这样的值

    例如,此代码:

        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));
    

    您也可以使用映射进行迭代:

        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());
        }
    

    您的意思是要替换
    系统的内容。在
    中,我认为这种情况下最好的解决方案是枚举。具有连续整数的映射与列表相同。还有一组有限的值真正地叫出了“enum”:@m0skit0-不太可能,Java中带有构造函数的enum对于初学者来说是相当困难的。他确实需要数字和字符串之间的关系。@libik 1)枚举并不困难,而且在任何情况下,这都不是一个有效的借口,2)他认为他需要这种关系,事实上你可以在没有这种关系的情况下对它进行建模,即使如此,每个枚举都可以包含ID和名称,问题解决了。
        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());
        }
    
    Please select the character you would like to play:
    1: Fighter
    2: Mage
    3: Rogue