Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

378
Visualizações
¿Puedo usar una cadena en una declaración de cambio y usar .contains() con Java?

Estoy tratando de escribir un programa que reproduzca una versión recortada del juego de cartas Spades, y me gustaría hacer que mi código sea más eficiente mediante el uso de una declaración de cambio en lugar de repetir if/else if/else. Necesito que la función tome una cadena (tarjeta de usuario), que se parece a "Picas, 2" o "Diamantes, 6". Lo necesito para guardar el número al final de la cadena en un tipo de datos int. A continuación se muestran las declaraciones de trabajo if/else if/else.

 public static int getUserValue(String userCard) { int userValue = 0; if (userCard.contains("4")) { userValue = 4; } else if (userCard.contains("5")) { userValue = 5; } else if (userCard.contains("6")) { userValue = 6; } else if (userCard.contains("7")) { userValue = 7; } else if (userCard.contains("8")) { userValue = 8; } else if (userCard.contains("9")) { userValue = 9; } else if (userCard.contains("10")) { userValue = 10; } else if (userCard.contains("11")) { userValue = 11; } else if (userCard.contains("12")) { userValue = 12; } else if (userCard.contains("13")) { userValue = 13; } else if (userCard.contains("1")) { userValue = 1; } else if (userCard.contains("2")) { userValue = 2; } else if (userCard.contains("3")) { userValue = 3; } return userValue; }

Así que pensé que podría hacer algo como

 public static int getUserValue(String userCard) { int userValue = 0; switch (userCard){ case userCard.contains("4"): userValue = 4; break; } //etc, goes up to 13 then evaluates if 1, 2, 3. return userValue; }

Da un error que no puedo convertir de booleano a cadena. ¿Hay alguna manera de que pueda cambiar esto o escribirlo para que funcione de la manera que quiero?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

En su lugar, debe usar algo como una clase UserCard :

 public class UserCard { private Suit _suit; private int _value; // Constructor // getter + setter } public enum Suit { DIAMONDS, HEARTS, SPADES, CLUBS; }

De esa manera, ni siquiera necesita el interruptor porque ya tiene ese valor que desea extraer. Su getUserValue es simplemente:

 public static int getUserValue(UserCard userCard) { return userCard.getValue(); }
over 4 years ago · Santiago Trujillo Relatório

0

Para responder a la pregunta apenas como se hace, no, no puede usar el interruptor como le gustaría en su ejemplo.

Los casos de un interruptor tienen que ser constantes. Puede usar valores literales, campos finales estáticos u operadores para combinarlos; pero no llamar a un método. Entonces, por ejemplo, el case 1+2 es válido así como el case A+B , incluso cuando A y B son cadenas.

Sin embargo, hay una mejor manera de extraer el valor de su cadena, usando String.indexOf, String.substring e Integer.parseInt, o expresiones regulares para cosas más complejas. O, mejor aún, siga otras respuestas que sugieren crear una clase de tarjeta.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda