如何在Java中从字符串转换为int?

时间:2014-12-01 21:07:56

标签: java string int

所以我必须制作一个卡片项目,其中包含一个字符串,例如" Six of Hearts"并根据数字(六)和套装(心)的值将其转换为整数数组。关于如何让java接受字符串"六"并输出6 ...任何提示?

编辑:     俱乐部= 0;     黑桃= 3;     心= 2;     钻石= 1;

7 个答案:

答案 0 :(得分:3)

您可以使用地图。您还可以使用case或if else语句来完成此任务。

    HashMap<String, Integer> numbers = new HashMap<String, Integer>();
    numbers.put("ace", 1);
    numbers.put("two", 2);
    numbers.put("three", 3);
    numbers.put("four", 4);
    numbers.put("five", 5);
    numbers.put("six", 6);
    numbers.put("seven", 7);
    numbers.put("eight", 8);
    numbers.put("nine", 9);
    //etc...
    HashMap<String, Integer> suits = new HashMap<String, Integer>();
    suits.put("clubs", 0);
    suits.put("spades", 3);
    suits.put("hearts", 2);
    suits.put("diamonds", 1);

    numbers.get("zero");//use this to access the number
    suits.get("spades");//use this to access the suit

区分大小写在这里很重要,因此请确保密钥匹配您传递的任何内容以访问值...

答案 1 :(得分:2)

这通常是您使用enum:

enum Suit{
 CLUBS   ("clubs", 0),
 DIAMONDS("diamonds", 1),
 HEARTS  ("hearts", 2),
 SPADES  ("spades", 3);

 private final String name;
 private final int value;
 private static final HashMap<String, Suit> suitByName;
 static {
    suitByName = new HashMap<String, Suit>();
    for (Suit s: Suit.values()){
        suitByName.put(s.name, s);
    }
 }

 Suit(String name, int value){
     this.name = name;
     this.value = value;
 }
 public int getValue(){
    return this.value;
 }

 public static Suit fromString(String card){
    return suitByName.get(card.toLowerCase());
 }
}

省略了卡值的代码。遵循相同的方法。

答案 2 :(得分:1)

有多种方法可以做到这一点,但在我看来,最简单的方法是有一个地图,其中字符串键是数字的单词,即“六”,返回的值是整数值

所以你的代码看起来像这样

HashMap<String, Integer> numMap = new HashMap<String, Integer>();
numMap.put("two", 2);//repeat for all numbers

然后,只要您需要数字,就可以numMap.get("two")

答案 3 :(得分:0)

你可以把它混合一点。

  1. 将输入字符串拆分为字符串数组。 B.在结果中
  2. 索引单元格0处的数组将包含数字。 C.在结果中
  3. 索引单元格2处的数组将包含Shape。
  4. 现在您需要的只是将Number转换为实际数字。这可以通过SwitchMap来实现。

    将Shape转换为表示形状的实际数字也是如此。

答案 4 :(得分:0)

另一种方法,基于查找数组中元素的索引:

String str = "Six of Hearts"; //input string
String[] numbers = new String[]{"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "jack", "queen", "king", "ace"};
String[] suits = new String[]{"clubs", "diamonds", "hearts", "spades"};
String[] name = str.split(" ");
if (name.length != 3) throw new Exception("Improperly formatted card name");
int value = Arrays.asList(numbers).indexOf(name[0]);
int suit = Arrays.asList(suits).indexOf(name[2]);

答案 5 :(得分:0)

在这种情况下,枚举非常有用.. See Documentation.

首先创建一个CardValue枚举,例如。 ACE TWO..

enum CardValue {

        ACE(1),TWO(2),THREE(3),FOUR(4),
        FIVE(5),SIX(6),SEVEN(7),EIGHT(8),
        NINE(10),TEN(10),JACK(10),QUEEN(10),KING(10);

        private int cardValue;

        private CardValue (int cardValue){
            this.cardValue = cardValue;
        }

        public String toString(){
            return String.valueOf(cardValue);
        }

    }

第二次创建CardSuit的枚举,例如。 HEARTS CLUBS..

    enum CardSuit {
        DIAMONDS(1),HEARTS(2),SPADES(3),CLUBS(4);
        private int cardSuit;
        private CardSuit(int cardSuit){
            this.cardSuit = cardSuit;
        }

        public String toString(){
            return String.valueOf(cardSuit);
        }

    }

然后尝试这个。

    public static void main(String[] args){
        String inputedCard = "Six of Hearts";

        //Converts inputed card to uppercase then split it.
        //so the expected value is aInputedCard[0] = SIX & aInputedCard[1] = HEARTS
        String [] aInputedCard = inputedCard.toUpperCase().split(" OF ");

        //So you just need to Verify if the input is in correct format to avoid exceptions

        System.out.println("["+CardValue.valueOf(aInputedCard[0])+"]["+CardSuit.valueOf(aInputedCard[1])+"]");

    }

答案 6 :(得分:-2)

我认为你可以使用Integer.parseInt(String)