• Viernes 3 de Mayo de 2024, 07:54

Autor Tema:  Error Al Compilar Un Programa  (Leído 1244 veces)

shia_estrada

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Error Al Compilar Un Programa
« en: Lunes 3 de Diciembre de 2007, 23:46 »
0
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

Masiosare

  • Miembro MUY activo
  • ***
  • Mensajes: 118
    • Ver Perfil
Re: Error Al Compilar Un Programa
« Respuesta #1 en: Martes 4 de Diciembre de 2007, 19:01 »
0
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.  
El experto es aquel que sabe cada vez más sobre cada vez menos, hasta que sabe competamente todo sobre absolutamente nada.
[size=109]Ley de Murphy[/size]