Java - Alguien puede corregirme?

   
Vista:
Imágen de perfil de Luis Jesús

Alguien puede corregirme?

Publicado por Luis Jesús luisjc99@yahoo.com (25 intervenciones) el 30/09/2017 18:36:34
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import java.util.Scanner;
public class ejc34 {
    public static void main (String argv[]) {
 
    int dni;
    int jordan;
    int [] anArray;
 
 
    System.out.println("Introduce tu DNI");
    Scanner inputValue;
            inputValue=new Scanner(System.in);
            dni = inputValue.nextInt();
 
    jordan = dni % 23;
 
    anArray = new int [jordan];
    anArray[0] = 't';
    anArray[1] = 'r';
    anArray[2] = 'w';
    anArray[3] = 'a';
    anArray[4] = 'g';
    anArray[5] = 'm';
    anArray[6] = 'y';
    anArray[7] = 'f';
    anArray[8] = 'p';
    anArray[9] = 'd';
    anArray[10] = 'x';
    anArray[11] = 'b';
    anArray[12] = 'n';
    anArray[13] = 'j';
    anArray[14] = 'z';
    anArray[15] = 's';
    anArray[16] = 'q';
    anArray[17] = 'v';
    anArray[18] = 'h';
    anArray[19] = 'l';
    anArray[20] = 'c';
    anArray[21] = 'k';
    anArray[22] = 'e';
 
 
    System.out.println("La letra de tu DNI es: "+dni +(anArray[jordan]-1));
  }
}

POR QUE ME SALE ESTE ERROR? QUÉ ESTÁ MAL??? java.lang.arrayindexoutofboundsexception
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Alguien puede corregirme?

Publicado por juanki (131 intervenciones) el 30/09/2017 19:18:29
Hola

Pues obviamente te sale por que el índice que usas no es correcto. Lo más sencillo para tratar de averiguar qué ocurre es que justo en la línea de antes pongas una línea que lo saque por consola, así sabes el índice que estás tratando de usar.

Imagino que el problema te viene de cuando creas el array:

anArray = new int [jordan]; No debes crearlo de longitud jordan, si no 23, que es el número de caracteres que tienes (si no conté mál XD), jordan contendrá el elemento al que debes acceder, no el total.

Un saluddo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Luis Jesús

Alguien puede corregirme?

Publicado por Luis Jesús (25 intervenciones) el 30/09/2017 19:46:50
Muchas gracias ya hice lo del cambio de jordan por el número de elementos, que eran 23, ahora me compila, pero no sé como decirle a la consola que quiero la letra que se relaciona con "jordan"

fggfgbtg
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Alguien puede corregirme?

Publicado por juanki (131 intervenciones) el 30/09/2017 20:20:02
Hola

Creo que te está imprimiendo el código ascii de la letra :) Usa printf:

System.out.printf("La letra de tu DNI es: %d%c\n", dni, anArray[jordan]);

Por cierto, ¿por que le pones -1?

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Luis Jesús

Alguien puede corregirme?

Publicado por Luis Jesús luisjc99@yahoo.com (25 intervenciones) el 30/09/2017 21:16:34
SISISISISISISIII LO CONSEGUÍ
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Sebastian

Alguien puede corregirme?

Publicado por Sebastian (65 intervenciones) el 30/09/2017 23:31:04
Mmmmm tambien podrias cambiar el vector de tipo "int" a "String" y asi te saldrá el carácter y no el numero del carácter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
.
.
.
.
 anArray = new String [23];
    anArray[0] = "t";
    anArray[1] = "r";
    anArray[2] = "w";
    anArray[3] = "a";
    anArray[4] = "g";
    anArray[5] = "m";
    anArray[6] = "y";
    anArray[7] = "f";
    anArray[8] = "p";
    anArray[9] = "d";
    anArray[10] = "x";
    anArray[11] = "b";
    anArray[12] = "n";
    anArray[13] = "j";
    anArray[14] = "z";
    anArray[15] = "s";
    anArray[16] = "q";
    anArray[17] = "v";
    anArray[18] = "h";
    anArray[19] = "l";
    anArray[20] = "c";
    anArray[21] = "k";
    anArray[22] = "e";
 
 
    System.out.println("La letra de tu DNI es: "+dni +(anArray[jordan]-1));
  }
}
y así debería funcionar como lo quieres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Luis Jesús

Alguien puede corregirme?

Publicado por Luis Jesús (25 intervenciones) el 01/10/2017 16:35:36
Aunque ya lo consegií hacer he probado tu forma, y la probé ya antes, no compila
no-sirve
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Alguien puede corregirme?

Publicado por juanki (131 intervenciones) el 01/10/2017 17:45:48
Hola

¡¡ También tienes que cambiar a string la declaración !! Tienes que aprender a entender los errores y por que salen, si no, estás perdido, es algo fundamental.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Luis Jesús

Alguien puede corregirme?

Publicado por Luis Jesús (25 intervenciones) el 01/10/2017 20:39:42
También lo hice pero tampoco compilaba. Pero ahora sí que me compila gracias a utilizar char en vez de String. Por cierto, muchas gracias por la ayuda, de verdad :D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Sebastian

Alguien puede corregirme?

Publicado por Sebastian (65 intervenciones) el 01/10/2017 19:07:55
jajaja si sale ese pequeño error por que no cambiaste la declaración del vector al inicio del código

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Scanner;
public class ejc34 {
    public static void main (String argv[]) {
 
    int dni;
    int jordan;
    int [] anArray;// aca tienens que cambiar el int por String
 
 
    System.out.println("Introduce tu DNI");
    Scanner inputValue;
            inputValue=new Scanner(System.in);
            dni = inputValue.nextInt();
 
    jordan = dni % 23;

Cambias eso y ya esta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Luis Jesús

Alguien puede corregirme?

Publicado por Luis Jesús (25 intervenciones) el 01/10/2017 20:43:14
Ya lo he solucionado, el problema es que no era String lo que tenia que poner, porque yo no declaré una cadena de texto, sino un solo carácter, así que utilicé char. Muchas gracias por la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar