Java - Guardar y ordenar datos con Scanner

 
Vista:

Guardar y ordenar datos con Scanner

Publicado por Ale (6 intervenciones) el 23/02/2021 02:00:50
Hola, necesito ayuda para ejecutar un programa que ordene datos numéricos de menor a mayor con el metodo sort().

Un programa en Java que permita ingresar por teclado:

1-La cantidad de datos a guardar en un vector numérico.
2-Los datos que luego serán guardados en un vector numérico del tipo int.
3-Ordenar los datos del vector de menor a mayor.
4-Mostrar los datos ordenados en la pantalla.


La salida debe mostrar:

Vector numerico*** Metodo de ordenamiento proporcionado por Java

¿Cuantos valores numericos desea ingresar? --> 4

--Entrada de datos al vector--
Dato (0) >> 99
Dato (1) >> 2
Dato (2) >> 77
Dato (3) >> 1

--Fin de la entrada de datos al vector--

Ordenando... 4 valores.

Los numeros ordenados de menor a mayor son:
1 2 77 99

---------------------------------

Si pueden completar/corregir el código que tengo armado hasta ahora. gracias


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
package proyecto;
 
import java.util.Scanner;
import java.util.Arrays;
 
public class Proyecto
{
        private Scanner teclado;
        private int [] numeros;
 
    public static void main(String[] argv)
    {
 
        teclado = new Scanner(System.in);
 
        numeros = new int[4];
 
        int[] numeros = {99, 2 , 77 , 1};
 
 
 
        System.out.println("¿Cuantos valores numericos desea ingresar?" + numeros.length );
 
        numeros[i] = teclado.nextInt();
     }
 
        for(int i = 0; i < numeros.length; i++)
        {
            System.out.printf("Dato(%d) >>" , i);
             numeros[i] = teclado.nextInt();
        }
 
        System.out.println("--Fin de la entrada de datos al vector--");
 
        System.out.println("Ordenando.." + numeros.length + "valores.");
 
        Arrays.sort(numeros);
 
        System.out.println("Los numeros ordenados de mayor a menor son: " );
                for(i = 0; i < numeros.length; i++)
        {
            System.out.print(numeros[i]+ " ");
        }
 
        System.out.println();
 
 
    }
 
}
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 Kabuto
Val: 3.374
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Guardar y ordenar datos con Scanner

Publicado por Kabuto (929 intervenciones) el 23/02/2021 11:48:13
Hola.

Las variables de ámbito global que declaras al principio, han de ser static.

1
2
3
4
public class Proyecto
{
        private static Scanner teclado;
        private static int [] numeros;

De lo contrario, no podrás acceder a ellas en el método main, el cuál también es static

Sobre el método main, lo cierras demasiado pronto, dejando la mayor parte del código fuera:

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
public class Proyecto
{
        private Scanner teclado;
        private int [] numeros;
 
    public static void main(String[] argv)
    {
 
        teclado = new Scanner(System.in);
 
        numeros = new int[4];
 
        int[] numeros = {99, 2 , 77 , 1};
 
 
 
        System.out.println("¿Cuantos valores numericos desea ingresar?" + numeros.length );
 
        numeros[ i] = teclado.nextInt();
     } //Método main cerrado, a partir de aquí todo el código queda fuera y por tanto no es ejecutable
 
        for(int i = 0; i < numeros.length; i++)
        {
            System.out.printf("Dato(%d) >>" , i);
             numeros[ i] = teclado.nextInt();
        }


Sobre el array, si le vas a preguntar al usuario cuántos valores quiere ingresar, es decir, qué tamaño quiere que tenga el array.., no puedes darte tú un tamaño previamente.
Ni es necesario darle valores

1
2
numeros = new int[4]; //Le das longitud 4 antes de que el usuario decida su tamaño
int[] numeros = {99, 2 , 77 , 1}; //Estos valores no sirven para nada, es el usuario quien tiene que proporcionar los datos


Luego estas líneas no tienen mucho sentido

Preguntas cuanto valores quiere ingresar, mostrándole en la pregunta el tamaño que tú has decidido.
Luego lees un valor, pero con ese valor no decides un nuevo tamaño para el array.
Lo guardas en la posición que indique la variable i, la cuál en ese momento no ha sido declarada todavía, así que el compilador dará error

1
2
System.out.println("¿Cuantos valores numericos desea ingresar?" + numeros.length );
numeros[ i] = teclado.nextInt();


Te dejo aquí un ejemplo de cómo se podría resolver. Un saludo

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
public class Ordenar {
 
	private static Scanner teclado;
    private static int[] numeros;
 
	public static void main(String[] args) {
 
		teclado = new Scanner(System.in);
 
		System.out.print("¿Cuantos valores va a ingresar?: ");
		int valores = teclado.nextInt();
 
		//Ahora que ya sabemos la cantidad de valores, podemos construir el array
		numeros = new int[valores];
 
		//Pedimos datos
		for (int in = 0; in < valores; in++) {
			System.out.printf("Dato(%d) >>" , in);
            numeros[in] = teclado.nextInt();
		}
 
		//Ordenamos
		Arrays.sort(numeros);
 
		//Mostramos el array ordenado
		System.out.println("\nLos numeros ordenados de menor a mayor son: " );
		System.out.println(Arrays.toString(numeros));
 
	}
 
}
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

Guardar y ordenar datos con Scanner

Publicado por Ale (6 intervenciones) el 24/02/2021 02:26:40
Hola, hice las modificaciones y ahora la salida solo devuelve :

¿Cuantos valores va a ingresar?-->4 en ese momento la ejecución queda colgada en RUNNING


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
package prueba;
 
import java.util.Scanner;
import java.util.Arrays;
 
public class Prueba {
 
    private static Scanner teclado;
    private static int[] numeros;
 
    public static void main(String[] args) {
 
        teclado = new Scanner(System.in);
        int i;
 
          int[] numeros = {99,2,77,1};
 
        System.out.println("¿Cuantos valores va a ingresar?-->" + numeros.length );
	   int valores = teclado.nextInt();
 
 
 
        System.out.println("--Entrada de datos al vector--");
           numeros = new int[valores];
 
               for( i = 0; i < valores; i++)
        {
            System.out.printf("Dato(%d) >>" , i);
            numeros[i] = teclado.nextInt();
        }
 
        System.out.println("--Fin de la entrada de datos al vector--");
 
        System.out.println("Ordenando.." + numeros.length + "valores.");
 
        Arrays.sort(numeros);
 
        System.out.println("Los numeros ordenados de mayor a menor son: " );
                for(i = 0; i < numeros.length; i++)
        {
            System.out.print(numeros[i]+ " ");
        }
 
        System.out.println();
 
 
    }
 
}
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