Java - Ordenar datos vectores matrices operaciones

 
Vista:
sin imagen de perfil
Val: 13
Ha aumentado su posición en 8 puestos en Java (en relación al último mes)
Gráfica de Java

Ordenar datos vectores matrices operaciones

Publicado por Greta_valencia (6 intervenciones) el 05/02/2020 14:17:34
Hola,

Estoy realizando una tarea en la que me han facilitado un listado con nombres y notas (Captura01).
Captura01
Tengo que crear 4 vectores (uno para los nombres y uno para cada trimestre de notas). Pero cuando intento crear el primero me aparece un error (captura 02) que he intentado resolver indicando que la longitud es 12 pero entonces sólo me aparecen los 3 primeros nombres (captura 03).

Captura02
Captura03
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
Imágen de perfil de pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ordenar datos vectores matrices operaciones

Publicado por pablo (239 intervenciones) el 05/02/2020 16:00:22
Hola Greta

Primero que nada el primer arreglo que tienes de alumnos tiene una capacidad de 12 no de 48 como elementos uno a uno por ende te lanza el error de ArrayIndexOutOfBound que quiere decir que tu array no tiene esa capacidad, para mi el recorrido que podrías hacer sería el siguiente.



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
import java.util.Arrays;
 
 
public class HelloWorld
{
 
  public static void main(String[] args)
  {
 
    String alumnos [] 	={
      "Joan#6.5#-7.0#4.8","Ana#8.9#9.4#8.7","Leila#10#9.9#9.8",
      "Mateu#2.3#5.6#4.5","Pere#3.7#-2.3#4.3","Andreu#8.2#6#7",
      "Jaume#7.5#-3#15","Isabel#5.7#7.5#6.5","Vicent#3.2#3.4#3.7",
      "Lidia#2.3#4.5#7.8","Anabel#4.5#5.6#5","Maribel#2.5#5.7#8.9"
    };
    String alumnosynotas ;
    alumnosynotas = String.join("#", alumnos);
 
    System.out.println("Los alumnos y sus notas correspondientes son: \n" + alumnosynotas);
 
    String [] elementosunoauno = alumnosynotas.split("#");
 
    System.out.println(Arrays.toString(elementosunoauno));
 
    for(int i = 0; i<elementosunoauno.length; i++){
    		System.out.println("Elemento " + i + ":" +elementosunoauno[i]);
    }
 
    for(int i = 0; i<elementosunoauno.length; i+=4){
 
      System.out.println(elementosunoauno[i]);
    }
 
  }
}

Saludos y espero que te pueda servir.
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
sin imagen de perfil
Val: 13
Ha aumentado su posición en 8 puestos en Java (en relación al último mes)
Gráfica de Java

Ordenar datos vectores matrices operaciones

Publicado por Greta_valencia (6 intervenciones) el 06/02/2020 14:42:56
Buenas tardes,

Muchas gracias por tu respuesta. Eso era lo que quería y lo he guardado en un vector. He hecho lo mismo con las notas pero en el segundo trimestre me aparece el siguiente error, no sé si alguien sabría ayudarme.

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
46
47
import java.util.Arrays;
import java.util.ArrayList;
import java.io.*;
import java.util.*;
 
public class Main{
 
    public static void main (String[]args){
 
    //Copio el listado de alumnos de la PAC06.
 
    String alumnos []= {"Joan#6.5#−7.0#4.8","Ana#8.9#9.4#8.7","Leila#10#9.9#98",
    "Mateu#2.3#5.6#4.5","Pere#3.7#−2.3#4.3","Andreu#8.2#6#7",
    "Jaume#7.5#−3#15","Isabel#5.7#7.5#6.5","Vicent#3.2#3.4#3.7",
    "Lidia#2.3#4.5#7.8","Anabel#4.5#5.6#","Maribel#2.5#6.7#8.9"};
 
    //A continuación, elimino las comas para generar una cadena separada con #.
    String alumnosynotas;
    alumnosynotas = String.join ("#", alumnos);
 
    //Imprimo el resultado.
    System.out.println ("Los alumnos y sus notas correspondientes son: \n" + alumnosynotas);
 
    String [] elementosunoauno = alumnosynotas.split ("#");
    System.out.println(Arrays.toString(elementosunoauno));
 
    for(int i=0; i<elementosunoauno.length; i++) {
        System.out.println("Element "+i+": "+elementosunoauno[i]);
    }
 
    System.out.println("");
    for(int i=0; i<elementosunoauno.length; i+=4) {
        String nombres=elementosunoauno[i];
        System.out.println(nombres);
    }
    System.out.println("");
    for(int i=1; i<elementosunoauno.length; i+=4) {
        float primer= Float.parseFloat(elementosunoauno[i]);
        System.out.println(primer);
    }
    System.out.println("");
    for(int i=2; i<elementosunoauno.length; i+=4) {
        float segundo= Float.parseFloat(elementosunoauno[i]);
        System.out.println(segundo);
    }
    }
}


Exception in thread "main" java.lang.NumberFormatException: For input string: "−7.0"
at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
at java.base/jdk.internal.math.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
at java.base/java.lang.Float.parseFloat(Float.java:461)
at Main.main(Main.java:43)




GRACIAS DE ANTEMANO.
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 pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ordenar datos vectores matrices operaciones

Publicado por pablo (239 intervenciones) el 06/02/2020 15:23:47
Hola tu problema rádica en como estas pasandole el simbolo negativo

1
2
3
4
String alumnos []= {"Joan#6.5#-7.0#4.8","Ana#8.9#9.4#8.7","Leila#10#9.9#98",
"Mateu#2.3#5.6#4.5","Pere#3.7#-2.3#4.3","Andreu#8.2#6#7",
"Jaume#7.5#-3#15","Isabel#5.7#7.5#6.5","Vicent#3.2#3.4#3.7",
"Lidia#2.3#4.5#7.8","Anabel#4.5#5.6#","Maribel#2.5#6.7#8.9"};

1
2
3
− Este no funciona
- Este funciona
fijate en los tamaños y en la posición de los mismos

Saludos.
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
sin imagen de perfil
Val: 13
Ha aumentado su posición en 8 puestos en Java (en relación al último mes)
Gráfica de Java

Ordenar datos vectores matrices operaciones

Publicado por Greta_valencia (6 intervenciones) el 06/02/2020 16:26:17
Madre mía!!
Muchísimas gracias porque nunca lo hubiera imaginado.

Saludos!!
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
sin imagen de perfil
Val: 13
Ha aumentado su posición en 8 puestos en Java (en relación al último mes)
Gráfica de Java

Ordenar datos vectores matrices operaciones

Publicado por Greta_valencia (6 intervenciones) el 06/02/2020 17:47:04
Hola,

Vuelvo a tener un problema ya que en la tercera evaluación Anabel no tiene nota. Entonces cuando intento pasar las notas a un vector float, al llegar al espacio en blanco se para.

Me aparece el siguiente error:
Exception in thread "main" java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
at java.lang.Float.parseFloat(Float.java:451)
at Main.main(Main.java:53)

Entiendo a que se debe a que el programa no es capaz de pasar un espacio en blanco a un vector porque no es un valor numérico.

No sé cómo debería solucionarlo... =(


Dejo todo el código a continuación:

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
46
47
48
49
50
51
52
53
54
55
56
57
58
import java.util.Arrays;
import java.util.ArrayList;
import java.io.*;
import java.util.*;
 
public class Main{
 
public static void main (String[]args){
 
//Copio el listado de alumnos de la PAC06.
 
String alumnos []= {"Joan#6.5#-7.0#4.8","Ana#8.9#9.4#8.7","Leila#10#9.9#98",
"Mateu#2.3#5.6#4.5","Pere#3.7#-2.3#4.3","Andreu#8.2#6#7",
"Jaume#7.5#-3#15","Isabel#5.7#7.5#6.5","Vicent#3.2#3.4#3.7",
"Lidia#2.3#4.5#7.8","Anabel#4.5#5.6#","Maribel#2.5#6.7#8.9"};
 
//A continuación, elimino las comas para generar una cadena separada con #.
String alumnosynotas;
alumnosynotas = String.join ("#", alumnos);
 
//Imprimo el resultado.
System.out.println ("Los alumnos y sus notas correspondientes son: \n" + alumnosynotas);
 
String [] elementosunoauno = alumnosynotas.split ("#");
System.out.println(Arrays.toString(elementosunoauno));
 
for(int i=0; i<elementosunoauno.length; i++) {
System.out.println("Element "+i+": "+elementosunoauno[i]);
}
 
System.out.println("");
for(int i=0; i<elementosunoauno.length; i+=4) {
String nombres=elementosunoauno[i];
System.out.println(nombres);
}
System.out.println("");
for(int i=1; i<elementosunoauno.length; i+=4) {
float primer= Float.parseFloat(elementosunoauno[i]);
System.out.println(primer);
}
System.out.println("");
for(int i=2; i<elementosunoauno.length; i+=4) {
float segundo= Float.parseFloat(elementosunoauno[i]);
System.out.println(segundo);
}
System.out.println("");
for(int i=2; i<elementosunoauno.length; i+=4) {
float segundo= Float.parseFloat(elementosunoauno[i]);
System.out.println(segundo);
}
System.out.println("");
for(int i=3; i<elementosunoauno.length; i+=4) {
float tercer= Float.parseFloat(elementosunoauno[i]);
System.out.println(tercer);
}
 
}
}
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 pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ordenar datos vectores matrices operaciones

Publicado por pablo (239 intervenciones) el 06/02/2020 18:22:21
Hola Buenas

1
,"Anabel#4.5#5.6#" //Anabel está así
1
,"Anabel#4.5#5.6#0"//Deberías de pasarlo con un 0 bien sea en la segunda o tercera, donde vaya la nota, por que tiene ese espacio vació

Saludos.
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
sin imagen de perfil
Val: 13
Ha aumentado su posición en 8 puestos en Java (en relación al último mes)
Gráfica de Java

Ordenar datos vectores matrices operaciones

Publicado por Greta_valencia (6 intervenciones) el 07/02/2020 14:14:13
Conseguí sacar lo que me proponía de la siguiente forma, así cuando encuentra un espacio vacío lo sustituye por un 9999 que es una nota que no puede existir.

Ahora lo que necesito es recorrer el vector de nombre y el de cada evaluación (una por una) y ver si algún alumno tiene una nota que no vaya de 0 a 10. En ese caso, el programa deberá pedir por teclado la nueva nota.

Se que debería hacer un do (recorrer el vector) while (para que sea un bucle) pero no sé como hacerlo para que me saque el nombre del alumno y su nota correspondiente. Posteriormente, tampoco sé cómo lo podría guardar en un nuevo vector.

Gracias de antemano.

Dejo el código!!

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import java.util.Arrays;
import java.util.ArrayList;
import java.io.*;
import java.util.*;
 
public class Main{
 
public static void main (String[]args){
 
//Copio el listado de alumnos de la PAC06.
 
String alumnos []= {"Joan#6.5#-7.0#4.8","Ana#8.9#9.4#8.7","Leila#10#9.9#98",
"Mateu#2.3#5.6#4.5","Pere#3.7#-2.3#4.3","Andreu#8.2#6#7",
"Jaume#7.5#-3#15","Isabel#5.7#7.5#6.5","Vicent#3.2#3.4#3.7",
"Lidia#2.3#4.5#7.8","Anabel#4.5#5.6#","Maribel#2.5#6.7#8.9"};
 
//A continuación, elimino las comas para generar una cadena separada con #.
String alumnosynotas;
alumnosynotas = String.join ("#", alumnos);
 
String replaced = alumnosynotas.replace("##","#9999#");
System.out.println(replaced);
//Imprimo el resultado.
System.out.println ("Los alumnos y sus notas correspondientes son: \n" + alumnosynotas);
String [] elementosunoauno = replaced.split ("#");
System.out.println(Arrays.toString(elementosunoauno));
 
for(int i=0; i<elementosunoauno.length; i++) {
System.out.println("Element "+i+": "+elementosunoauno[i]);
}
 
System.out.println("");
for(int i=0; i<elementosunoauno.length; i+=4) {
String nombres=elementosunoauno[i];
System.out.println(nombres);
}
System.out.println("");
for(int i=1; i<elementosunoauno.length; i+=4) {
float primer= Float.parseFloat(elementosunoauno[i]);
System.out.println(primer);
}
System.out.println("");
for(int i=2; i<elementosunoauno.length; i+=4) {
float segundo= Float.parseFloat(elementosunoauno[i]);
System.out.println(segundo);
}
System.out.println("");
for(int i=2; i<elementosunoauno.length; i+=4) {
float segundo= Float.parseFloat(elementosunoauno[i]);
System.out.println(segundo);
}
System.out.println("");
for(int i=3; i<elementosunoauno.length; i+=4) {
float tercer=Float.parseFloat(elementosunoauno[i]);
System.out.println(tercer);
}
System.out.println("");
 
int maximo=10;
int minimo=0;
 
 
for(int i=0; i<primer.length; i++);
if (primer[i]>maximo){
    System.out.println("El alumno x tiene una nota superior a 10.");
}
 
 
}
}
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
sin imagen de perfil
Val: 13
Ha aumentado su posición en 8 puestos en Java (en relación al último mes)
Gráfica de Java

Ordenar datos vectores matrices operaciones

Publicado por Greta_valencia (6 intervenciones) el 07/02/2020 18:35:46
He cambiado todo el código, creo que ahora sí lo tengo dentro de vectores.

Mi problema es que cuando intento buscar las notas negativas me aparece el siguiente mensaje de error:

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
negativo cannot be resolved to a variable
negativo cannot be resolved to a variable
negativo cannot be resolved to a variable
nombre cannot be resolved to a variable
negativo cannot be resolved to a variable

at Main.main(Main.java:56)


Además, a partir de ese momento, necesitaría que solicitara un nuevo valor de nota y lo introdujera en el lugar correspondiente del vector.

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import java.util.Arrays;
import java.util.ArrayList;
import java.io.*;
import java.util.*;
 
public class Main{
 
public static void main (String[]args){
 
//Copio el listado de alumnos de la PAC06.
 
String alumnos []= {"Joan#6.5#-7.0#4.8","Ana#8.9#9.4#8.7","Leila#10#9.9#98",
"Mateu#2.3#5.6#4.5","Pere#3.7#-2.3#4.3","Andreu#8.2#6#7",
"Jaume#7.5#-3#15","Isabel#5.7#7.5#6.5","Vicent#3.2#3.4#3.7",
"Lidia#2.3#4.5#7.8","Anabel#4.5#5.6#","Maribel#2.5#6.7#8.9"};
 
//A continuación, elimino las comas para generar una cadena separada con #.
String alumnosynotas;
alumnosynotas = String.join ("#", alumnos);
 
 
//Imprimo el resultado.
System.out.println ("Los alumnos y sus notas correspondientes son: \n" + alumnosynotas);
String [] elementosunoauno = alumnosynotas.split ("#");
System.out.println(Arrays.toString(elementosunoauno));
 
System.out.println("");
System.out.println("Los nombres de l@s alumn@s son: ");
String[] nombres=alumnosynotas.split("#");
for(int i=0; i<nombres.length; i+=4) {
System.out.println(nombres[i]);
}
 
System.out.println("");
System.out.println("Las notas del primer trimestre son: ");
String[] primero=alumnosynotas.split("#");
for(int i=1; i<primero.length; i+=4) {
System.out.println(primero[i]);
}
 
System.out.println("");
System.out.println("Las notas del segundo trimestre son: ");
String[] segundo=alumnosynotas.split("#");
for(int i=2; i<segundo.length; i+=4) {
System.out.println(segundo[i]);
}
 
System.out.println("");
System.out.println("Las notas del tercer trimestre son: ");
String[] tercero=alumnosynotas.split("#");
for(int i=3; i<tercero.length; i+=4) {
System.out.println(tercero[i]);
}
 
 
negativo=0;
 
 
for (int f = 0; f < nombres.length; f++) {
    if (primero<negativo) {
        negativo = primero;
    }
        System.out.printlm("El alumno: " + nombre);
        System.out.println("Tiene una nota negativa: " + negativo);
}
 
 
 
 
}
 
 
}
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