Java - array bidimensional

 
Vista:

array bidimensional

Publicado por javier (3 intervenciones) el 21/02/2023 13:15:39
tengo que hacer un array bidimensional tipo string pq lleva numeros y nombres , las asignaturas y sus calificaciones , no se como hacer para buscar la mayor de las calificaciones de cada asignatura , ya que son strings todos los valores , la he pasado a integer pero sigue dandome error
package Actividad02;

import java.util.Scanner;

public class Ejercicio02 {

public static void menu() {
System.out.println("[1] Mostrar el nombre de todas las asignaturas");
System.out.println("[2] Modificar el nombre de una asignatura");
System.out.println("[3] Modificar la puntuacion de una asignatura");
System.out.println("[4] Mostrar la puntuacion menor de cada una de las asignaturas");


System.out.println("[0] Salir");


}

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
boolean exit = false;
int optionMenu;
// int numeroRecipiente=0;
// double añadirRecipiente;
// double restarRecipiente=0;
String [][] notas = new String[4][4];

notas[0][0]="M01";
notas[0][1]="8";
notas[0][2]="5";
notas[0][3]="10";
notas[1][0]="M02";
notas[1][1]="3";
notas[1][2]="8";
notas[1][3]="9";
notas[2][0]="M03";
notas[2][1]="9";
notas[2][2]="7";
notas[2][3]="6";
notas[3][0]="M04";
notas[3][1]="10";
notas[3][2]="4";
notas[3][3]="9";

System.out.println("los valores del array bidimensional son: ");
for (int i=0; i<notas.length;i++) {
System.out.println();
for (int k=0;k<notas[i].length;k++){


System.out.print(notas[i][k]+ " ");
}
}

System.out.println();







System.out.println("Por favor introduce la opcion elegida: ");

do {
menu();


optionMenu = input.nextInt();

switch (optionMenu) {
case 1:



System.out.println("las asignaturas introducidas son: ");
for (int l=0; l<notas.length;l++) {

for (int m=0; m<1;m++) {



System.out.print(notas[l][0]+ " ");

}
}
System.out.println();






break;
case 2:
int [][] arrayNumero = new int[4][4];
for(int i=0;i<arrayNumero.length;i++)
{
for(int k=0;k<arrayNumero[k].length;k++)
{
//
arrayNumero[i][k]=Integer.parseInt(notas[i][k]);
}
}
for(int i=0; i<arrayNumero.length; i++){
int mayor=arrayNumero[i][1];
for(int k=0;k<arrayNumero[i].length; k++) {

int numero=arrayNumero[i][1];
if(numero>mayor) {
mayor=numero;
}
}

System.out.print("Nota Más alta del Módulo 0"+(i+1)+":"+mayor+"\n");
}
break;
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
sin imagen de perfil

array bidimensional

Publicado por Ivan (3 intervenciones) el 21/02/2023 17:43:32
Estamos con lo mismo jajajaja

No tendrás por ahí el ejercicio 01, ¿verdad?
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

array bidimensional

Publicado por Javier (3 intervenciones) el 21/02/2023 18:13:11
Si, ese si jejeje
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

array bidimensional

Publicado por Ivan (3 intervenciones) el 21/02/2023 18:16:13
Pues me harías un favor si me lo enseñas, no soy capaz de sacarlo :(
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

array bidimensional

Publicado por javier (3 intervenciones) el 24/02/2023 18:30:32
este es el 1
package Actividad02;

import java.util.Scanner;

public class Ejercicio01 {

public static void menu() {
System.out.println("[1] Añadir refresco a un recipiente");
System.out.println("[2] Quitar refresco de un recipiente");
System.out.println("[3] Mostrar el total de refresco");

System.out.println("[0] Salir");
System.out.println("Por favor introduce la opcion elegida: ");

}

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
boolean exit = false;//, recipienteSelected = false;
int optionMenu;
int numeroRecipiente=0;
double añadirRecipiente;
double restarRecipiente=0;
double [] recipientes = new double[5];

do {
menu();


optionMenu = input.nextInt();

switch (optionMenu) {
case 1:

do {

System.out.println("Introduce el nº de recipiente entre 0 y 4, por favor: ");
numeroRecipiente = input.nextInt();
} while (numeroRecipiente <0 || numeroRecipiente >4);
//recipienteSelected = true;



System.out.println("Introduce la cantidad a ingresar en el recipiente " + numeroRecipiente +
",por favor: ");
añadirRecipiente=input.nextDouble();
recipientes[numeroRecipiente] = añadirRecipiente+recipientes[numeroRecipiente];
System.out.println("----El estado actual de los recipientes es:");

System.out.println("en el recipiente nº0 hay: "+recipientes[0]+" litros");
System.out.println("en el recipiente nº1 hay: "+recipientes[1]+" litros");
System.out.println("en el recipiente nº2 hay: "+recipientes[2]+ " litros");
System.out.println("en el recipiente nº3 hay: "+recipientes[3]+" litros");
System.out.println("en el recipiente nº4 hay: "+recipientes[4]+" litros");


break;
case 2:
do {

System.out.println("Introduce el nº de recipiente entre 0 y 4, por favor: ");
numeroRecipiente = input.nextInt();
} while (numeroRecipiente <0 || numeroRecipiente >4);
// recipienteSelected = true;
do {
System.out.println("Introduce la cantidad a retirar en el recipiente " + numeroRecipiente +
",por favor: ");
restarRecipiente=input.nextDouble();
} while (restarRecipiente >recipientes[numeroRecipiente]);
recipientes[numeroRecipiente] = recipientes[numeroRecipiente]-restarRecipiente;
System.out.println("----El estado actual de los recipientes es:");

System.out.println("en el recipiente nº0 hay: "+recipientes[0]);
System.out.println("en el recipiente nº1 hay: "+recipientes[1]);
System.out.println("en el recipiente nº2 hay: "+recipientes[2]);
System.out.println("en el recipiente nº3 hay: "+recipientes[3]);
System.out.println("en el recipiente nº4 hay: "+recipientes[4]);
break;
case 3:
System.out.println("----El estado actual de los recipientes es:");

System.out.println("en el recipiente nº0 hay: "+recipientes[0]);
System.out.println("en el recipiente nº1 hay: "+recipientes[1]);
System.out.println("en el recipiente nº2 hay: "+recipientes[2]);
System.out.println("en el recipiente nº3 hay: "+recipientes[3]);
System.out.println("en el recipiente nº4 hay: "+recipientes[4]);
double sum=0;
for (int i=0;i<recipientes.length;i++){
sum+=recipientes[i];
}
System.out.println("La cantidad total de litros que hay en todos los recipientes es: "+sum);

break;
case 0:
System.out.println("Bye bye");

exit = true;
break;
default:
System.out.println("Incorrect option. Try again");
break;
}
} while (!exit);
}
}

y el 2
package Actividad02;

import java.util.Scanner;

public class Ejercicio02 {

public static void menu() {
System.out.println("[1] Mostrar el nombre de todas las asignaturas");
System.out.println("[2] Modificar el nombre de una asignatura");
System.out.println("[3] Modificar la puntuacion de una asignatura");
System.out.println("[4] Mostrar la puntuacion menor de cada una de las asignaturas");


System.out.println("[0] Salir");


}

public static void main(String[] args) {
Scanner input = new Scanner(System.in);

// Scanner sc = new Scanner(System.in);
boolean exit = false;
int optionMenu;

// int numeroRecipiente=0;
// double añadirRecipiente;
// double restarRecipiente=0;
String [][] notas = new String[4][4];



notas[0][0]="M01";
notas[0][1]="8";
notas[0][2]="5";
notas[0][3]="10";
notas[1][0]="M02";
notas[1][1]="3";
notas[1][2]="8";
notas[1][3]="9";
notas[2][0]="M03";
notas[2][1]="9";
notas[2][2]="7";
notas[2][3]="6";
notas[3][0]="M04";
notas[3][1]="10";
notas[3][2]="4";
notas[3][3]="9";

System.out.println("los valores del array bidimensional son: ");
for (int i=0; i<notas.length;i++) {
System.out.println();
for (int k=0;k<notas[i].length;k++){


System.out.print(notas[i][k]+ " ");
}
}

System.out.println();







System.out.println("Por favor introduce la opcion elegida: ");

do {
menu();


optionMenu = input.nextInt();


switch (optionMenu) {
case 1:



System.out.println("las asignaturas introducidas son: ");
for (int l=0; l<notas.length;l++) {

for (int m=0; m<1;m++) {



System.out.print(notas[l][0]+ " ");

}
}
System.out.println();





break;
case 2:
System.out.println("indica el numero de asignatura que quieres cambiar del 0 al 3: ");
int asign=input.nextInt();
System.out.println("la asignatura elegida es: "+asign);

System.out.println("indica el nuevo nombre de la asignatura: ");
String nuevoNombre=input.next();
System.out.println("el nuevo valor es: "+nuevoNombre);
notas[asign][0]=nuevoNombre;

break;
case 3:





System.out.println("indica el numero de asignatura que quieres cambiar del 0 al 3: ");
int asignatura=input.nextInt();
System.out.println("la asignatura elegida es: "+asignatura);
System.out.println("indica el numero de puntuacion que quieres cambiar del 1 al 3: ");
int puntuacion=input.nextInt();
System.out.println("la puntuacion elegida es: "+puntuacion);
System.out.println("la puntuacion en la posicion " +asignatura+","+puntuacion+" es: "+notas[asignatura][puntuacion]);
System.out.println("indica el nuevo valor entre 0 y 10: ");
String nuevoValor=input.next();
System.out.println("el nuevo valor es: "+nuevoValor);
notas[asignatura][puntuacion]=nuevoValor;
System.out.println("los valores de "+" Mod0"+notas[asignatura][0]+"son: "+notas[asignatura][1]+","+notas[asignatura][2]+","+notas[asignatura][3]);
break;
case 4:

// notas[0][0]="1";
// notas[0][1]="8";
// notas[0][2]="5";
//
// notas[0][3]="10";
// notas[1][0]="2";
// notas[1][1]="3";
// notas[1][2]="8";
// notas[1][3]="9";
// notas[2][0]="3";
// notas[2][1]="9";
// notas[2][2]="7";
// notas[2][3]="6";
// notas[3][0]="4";
// notas[3][1]="10";
// notas[3][2]="4";
// notas[3][3]="9";
//
int [][] arrayNumero = new int[notas.length][notas[0].length];
notas[0][0]="1";
//// notas[0][1]="8";
//// notas[0][2]="5";
//// notas[0][3]="10";
notas[1][0]="2";
//// notas[1][1]="3";
//// notas[1][2]="8";
//// notas[1][3]="9";
notas[2][0]="3";
//// notas[2][1]="9";
//// notas[2][2]="7";
//// notas[2][3]="6";
notas[3][0]="4";
//// notas[3][1]="10";
//// notas[3][2]="4";
//// notas[3][3]="9";
////

for(int a=0;notas.length>a;a++)
{
for(int b=0;notas[a].length>b;b++)
{

arrayNumero[a][b]=Integer.parseInt(notas[a][b]);
}
}

// for(int a=0; a<arrayNumero.length; a++){
// int mayor=arrayNumero[a][1];
// for(int b=0;b<arrayNumero[a].length; b++) {
//
// int numero=arrayNumero[a][1];
// if(numero>mayor) {
// mayor=numero;
// }
// }
//
// System.out.print("Nota Más alta del Módulo 0"+(a+1)+":"+mayor+"\n");
// }
// int menor;
for(int a=0; a<arrayNumero.length; a++){
int menor=arrayNumero[a][1];
for(int b=1;b<arrayNumero[a].length; b++) {
int numero=arrayNumero[a][b];
// if(arrayNumero[a][b]<menor) {


if (numero<menor) {
menor=numero;

}
}


System.out.print("Nota Más Baja del Módulo 0"+(a+1)+"\n"+menor+"\n");
}
break;


case 0:
System.out.println("Bye bye");

exit = true;
break;
default:
System.out.println("Incorrect option. Try again");
break;
}
} while (!exit);

}
}
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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

array bidimensional

Publicado por Kabuto (1380 intervenciones) el 22/02/2023 09:32:26
Te da error porque hay valores como "M01" que son IMPOSIBLES de parsear a Integer, ya que contienen letras y por lo tanto, se produce una excepción.

Una solución sería usar TRY CATCH para "capturar" esas excepciones y evitar que el programa deje de funcionar.

Pero en realidad, basta con evitar parsear el primer valor de cada fila (un array 2D es como una tabla con filas y columnas) ya que sabemos que las filas comienzan con el nombre de la asignatura.

Además, para hacer el código más legible y que te resulte más fácil clarificar ideas, lo ideal sería escribir un método separado que se encargue exclusivamente de recibir una "fila" del array 2D y buscar la calificación menor.

Bueno, el menor o el mayor. Porque no me queda claro que tienes que buscar, en un sitio dices que es el mayor pero en el menú del programa pone que es el menor...
Voy a suponer que es el menor.

Pongo tu mismo código con alguna pequeña corrección, y marcando en negrita la parte donde solucionamos lo de mostrar la nota menor de cada asignatura (case 4 del switch)

Fíjate que al apoyarnos en un método al que le enviamos las filas por separado, en lugar de intentar bregar directamente con toda la matriz, en realidad se soluciona todo con muy poquito 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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
public class Ejercicio02 {
 
	public static void menu() {
		System.out.println("\n\t\tMENU OPCIONES");
		System.out.println("[1] Mostrar el nombre de todas las asignaturas");
		System.out.println("[2] Modificar el nombre de una asignatura");
		System.out.println("[3] Modificar la puntuacion de una asignatura");
		System.out.println("[4] Mostrar la puntuacion menor de cada una de las asignaturas");
 
 
		System.out.println("[0] Salir");
 
		System.out.print("\nPor favor introduce la opcion elegida: ");
	}
 
	private static int buscaMenor(String[] fila) {
		/*
		 * Sabemos que primer valor de la fila (posicion [0]) es nombre de asignatura.
		 * Así que lo evitaremos y solo trabajaremos con el resto de valores
		 */
		int menor = Integer.parseInt(fila[1]); //Tomamos como referencia la primera calificacion
		//Comparamos con las siguientes
		for (int i = 2; i < fila.length; i++) {
			int valor = Integer.parseInt(fila[i]);
			if (valor < menor)
				menor = valor;
		}
 
		return menor;
 
	}
 
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		boolean exit = false;
		int optionMenu;
		// int numeroRecipiente=0;
		// double añadirRecipiente;
		// double restarRecipiente=0;
		String [][] notas = new String[4][4];
 
		notas[0][0]="M01";
		notas[0][1]="8";
		notas[0][2]="5";
		notas[0][3]="10";
		notas[1][0]="M02";
		notas[1][1]="3";
		notas[1][2]="8";
		notas[1][3]="9";
		notas[2][0]="M03";
		notas[2][1]="9";
		notas[2][2]="7";
		notas[2][3]="6";
		notas[3][0]="M04";
		notas[3][1]="10";
		notas[3][2]="4";
		notas[3][3]="9";
 
		System.out.println("los valores del array bidimensional son: ");
		for (int i=0; i<notas.length;i++) {
			System.out.println();
			for (int k=0;k<notas[i].length;k++){
 
 
				System.out.print(notas[i][k]+ " ");
			}
		}
 
		System.out.println();
 
 
		do {
			menu();
 
 
			optionMenu = input.nextInt();
 
			switch (optionMenu) {
 
			case 0:
				System.out.println("\n\t\tFIN DE PROGRAMA");
				exit = true;
				break;
 
			case 1:
				System.out.println("las asignaturas introducidas son: ");
				for (int l=0; l<notas.length;l++) {
 
					for (int m=0; m<1;m++) {
 
 
 
						System.out.print(notas[l][0]+ " ");
 
					}
				}
				System.out.println();
 
				break;
 
			case 4:
				//Recorremos las filas del array 2D y mostramos nombre asignatura y nota menor
				System.out.println("\n\t\tNOTA MENOR DE CADA ASIGNATURA\n");
				for (int fila = 0; fila < notas.length; fila++)
					System.out.println("Nombre: " + notas[fila][0] + " Nota menor: " + buscaMenor(notas[fila]));
				break;
 
			}
		} while(!exit);
		input.close();
	}
}
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

array bidimensional

Publicado por Maog (10 intervenciones) el 25/02/2023 21:04:14
En Java, se puede crear un array bidimensional tipo String que contenga información sobre las calificaciones de una lista de estudiantes en diferentes asignaturas. Cada fila del array representa un estudiante y cada columna representa una asignatura y su calificación. El siguiente código muestra cómo crear y llenar este tipo de array:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Calificaciones {
 
    public static void main(String[] args) {
        String[][] calificaciones = {
            {"Juan", "Matemáticas", "8.5", "Física", "7.2", "Historia", "9.0"},
            {"Ana", "Matemáticas", "9.0", "Física", "8.0", "Historia", "9.5"},
            {"Pedro", "Matemáticas", "7.5", "Física", "6.8", "Historia", "8.0"}
        };
 
        // Imprimir la información de los estudiantes
        for (int i = 0; i < calificaciones.length; i++) {
            String nombre = calificaciones[i][0];
            System.out.println("Estudiante: " + nombre);
            for (int j = 1; j < calificaciones[i].length; j += 2) {
                String asignatura = calificaciones[i][j];
                String calificacion = calificaciones[i][j+1];
                System.out.println(asignatura + ": " + calificacion);
            }
            System.out.println();
        }
    }
}
En este ejemplo, se crea un array bidimensional calificaciones con tres filas (una para cada estudiante) y siete columnas (una para el nombre del estudiante, tres para las asignaturas y tres para las calificaciones).

Luego se llena el array con los nombres de los estudiantes, las asignaturas y las calificaciones correspondientes. En el ejemplo, se han agregado tres estudiantes con sus respectivas calificaciones en tres asignaturas: Matemáticas, Física e Historia.

Finalmente, se recorre el array para imprimir la información de cada estudiante, utilizando un ciclo for. Para cada estudiante, se obtiene su nombre y se imprimen sus calificaciones en cada asignatura, utilizando otro ciclo for para recorrer las columnas correspondientes.
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