SoloCodigo

Programación General => Java => Mensaje iniciado por: shia_estrada en Lunes 3 de Diciembre de 2007, 23:46

Título: Error Al Compilar Un Programa
Publicado por: shia_estrada en Lunes 3 de Diciembre de 2007, 23:46
Hola, es la primera vez que escribo a este foro y espero contar con su ayuda, estoy haciendo un script para un proyecto final, el black jack, pero a la hora de compilar me sale un error "operator - can not be applied to java.lang.string,int", y el codigo qe tengo para eso es:

static String getFiguraCarta(int carta)  {
    String[] nombre = {"as", "2", "3", "4", "5", "6", "7", "8", "9", "10",
      "j", "q", "k"};
    String resulta;                

    resulta = nombre[getFiguraCarta(carta) - 1];
    return resulta;
  }


espero me ayuden..gracias
Título: Re: Error Al Compilar Un Programa
Publicado por: Masiosare en Martes 4 de Diciembre de 2007, 19:01
La función, mejor dicho Método, getFiguraCarta() regresa un dato del tipo 'String'.

en la linea:

Código: Text
  1. resulta = nombre[getFiguraCarta(carta) - 1];
  2.  

A un valor del tipo 'String' (que en Java se le considera un objeto) le estas tratando de aplicar una operación aritmética con un número, que es lo que arroja el error. Y por otro lado estás tratando de accesar a un elemento de un 'Array' o arreglo mediante un "String" siendo válido hacerlo solo con números.

Aparte de eso estas haciendo una llamada al método dentro del mismo método, lo que se llama recursividad, y en muchas ocaciones, como en esta, provoca ciclos infinitos.

Para resolverlo quita la llamada a la función en esa linea.

Código: Text
  1. resulta = nombre[carta - 1];
  2.  

Creo que también se puede quitar la variable resulta dejando el código así:

Código: Text
  1. static String getFiguraCarta(int carta) {
  2.  String[] nombre = {"as", "2", "3", "4", "5", "6", "7", "8", "9", "10",
  3. "j", "q", "k"};
  4.  
  5. return nombre[carta - 1];
  6. }
  7.  

Yo inclusive haría esto:
Código: Text
  1.  private final String[] nombre = {"as", "2", "3", "4", "5", "6", "7", "8", "9", "10", "j", "q", "k"};
  2.  
  3. public static String getFiguraCarta(int carta) {
  4. return nombre[carta - 1];
  5. }
  6.