que convertir java string int

convertir - ¿Cómo se convierte de una cadena a una int en Java?



string to int java 6 (7)

Así que tengo que hacer un proyecto de tarjeta que tome una cadena como "Six of Hearts" y la convierta en una matriz de enteros basada en el valor del número (seis) y el palo (corazones). Estoy golpeando una pared en cuanto a cómo obtener java para tomar la cadena "seis" y salida 6 ... ¿Alguna pista?

Editar: Clubs = 0; Espadas = 3; Corazones = 2; Diamantes = 1;



Hay varias maneras de hacerlo, pero en mi opinión la forma más sencilla sería tener un mapa de donde la clave de cadena es la palabra para el número, es decir, "seis", y el valor devuelto es el valor entero.

Entonces su código se vería así

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

luego, cuando necesites el dígito, haces numMap.get("two")


Otro enfoque, basado en encontrar el índice de un elemento dentro de una matriz:

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


Podrías usar un mapa. También puede usar una sentencia case o if else para lograr esto.

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

La sensibilidad de mayúsculas y minúsculas será importante aquí, así que asegúrese de que la clave coincida con lo que pase para acceder al valor ...


Puedes mezclarlo un poco.

  1. Divida la cadena de entrada en una matriz de cadena. B. En el resultado
  2. Matriz en la celda índice 0 contendrá el Número. C. En el resultado
  3. Matriz en la celda índice 2 contendrá la forma.

Ahora todo lo que necesita es convertir el Número en número real. Esto se puede lograr con Switch o Map .

Lo mismo ocurre con la conversión de Shape en el número real que representa la forma.


Enum es muy útil en este tipo de escenario. Consulte la documentación.

Primero crea un Enum of CardValue, por ej. 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); } }

Segundo Crea un Enum of CardSuit ej. 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); } }

Entonces prueba este.

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


Esto es típicamente algo que usaría una enumeración para:

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

Código para valores de tarjeta omitidos. Sigue el mismo enfoque.