Java - Arreglos sin retorno solo menu

 
Vista:
Imágen de perfil de Felipe De Jesús
Val: 29
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Arreglos sin retorno solo menu

Publicado por Felipe De Jesús (17 intervenciones) el 13/10/2016 09:30:06
Hola que tal compañeros del foro recurro a ustedes nuevamente ya que que tengo un problema que no encuentro donde esta, llevo todo el día buscandolo, el problema no se si esta bien o no el código, porque solo me corre pero no me muestra mas alla del menu. El probelma es este:

Datos:
Tengo un Arreglo este tiene una dimensión de 0-100 pero solo estan ocupados del 0 al 5 en el 0- esta 5, 1-7, 2-9, 3-10, 4-15 y 5-2.

Tengo que hacer un código que busque, edite, elimine y ordene asi:

En busqueda tiene de condicion que si ingreso el numero 9 me diga la posicion en la que esta, pero si ingreso otro numero que no se encuentre ocupado me diga que no se encuentra.

En Editar tengo que editar la posicion X que es el numero X, por X número, igual si ingreso un número erroneo me diga que no existe.

En Eliminar tengo que realizar la eliminacion de X número tal que al hacerlo se recorra de su posición actual, de igual manera al ingresar un número erroneo me diga que no existe.

Muestro mi código que que me digan en que esta mal estructardo, quiero pensar que son las condiciones pero ya me bloquee, porque solo me imprime el menu pero al elegir una de las tres opciones no aparce nada y solo cierra el programa.

Gracias por su ayuda y aquí esta 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
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
import java.util.*;
 
public class OperacionesLEBEEO {
 
	public static void main (String [] args) {
 
		Scanner leer=new Scanner (System.in);
		 boolean elNumero = false;
 
		int opcion;
 
 
		System.out.println("=================================");
		System.out.println("Menú");
		System.out.println("Para Buscar elige:   '1' ");
		System.out.println("Para Editar elige:   '2' ");
		System.out.println("para Eliminar elige: '3' ");
		System.out.println("Para Salir elige:    '0'");
		System.out.println("==================================");
		opcion= leer.nextInt();
 
 
		switch (opcion){
		case '1':
			int num[]=new int[0];
	        int a;
	        for(a=0;a<num.length;a++){
	            System.out.print("ingrese un número: ");
	            num[a]=leer.nextInt();
	        }
	        for(a=0;a<num.length;a++){
	            System.out.println(num[a]);
	        }
 
	        System.out.print("Buscar un número: ");
	        int numero;
	        numero=leer.nextInt();
 
	        for(a=0;a<num.length;a++){
	            if (numero == num[a]) {
	                System.out.println("El número esta en el indice "+a+", en la posicion "+(a+1));
	                elNumero = true;
	            }
	        }
 
	        if(elNumero==false) {
	            System.out.println("El numero no esta");
	        }
					break;
		case '2':
 
			System.out.print("Número de elementos del arreglo");
			int numero1=leer.nextInt();
			int[] arreglo=new int[numero1];
			for(int a1=0;a1<numero1;a1++){
			System.out.print("Elemento del campo"+(a1+1));
			arreglo[a1]=leer.nextInt();
			}
			System.out.print("Que elemento del arreglo quiere cambiar");
			int a1=leer.nextInt();
			System.out.print("Por cual elemento lo quiere cambiar");
			int b=leer.nextInt();
			arreglo[b]=a1;
			System.out.print("el arreglo queda");
			for(int b1=0;b1<numero1;b1++){
			System.out.print(""+arreglo[b1]);
			}
			break;
		case '3':
 
			System.out.println("Ingrese la posicion que desea eliminar");
			int a2 = new Scanner(System.in).nextInt();
			int[] arreglo1 = new int[0];
			if (a2 == arreglo1.length - 1) {
			arreglo1[a2] = 0;
			} else {
 
			for (int b1 = a2 + 1; b1 < arreglo1.length; b1++) {
			arreglo1[b1 - 1] = arreglo1[b1];
			}
 
			arreglo1[arreglo1.length - 1] = 0;
 
 
			for (int b1 = 0; b1 < arreglo1.length; b1++) {
			System.out.print(arreglo1[b1] + " - ");
			}
 
			System.out.println();
			}
			break;
		default:
			System.out.println("Ingrese un opción válida");
 
		}//Fin del Switch
 
 
		System.out.println();
		System.out.println("--------------------------------------");
		System.out.println("| Gracias por usar mi programa       |");
		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 Óscar

Arreglos sin retorno solo menu

Publicado por Óscar (14 intervenciones) el 13/10/2016 10:17:49
Hola Felipe.
Necesitas un Do/While (opcion != 0) para controlar la ejecución de la aplicación.
Ahora no tengo tiempo pero si necesitas algo más de detalle, házmelo saber.

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

Arreglos sin retorno solo menu

Publicado por YYanes (144 intervenciones) el 13/10/2016 15:32:56
Hola amigo:

nuestro amigo Óscat riene razón, necesita poner un do{ antes de mostrar el menú, y cerrarlo con }While (opcion != 0) luego de cerrar el Switch, sin embargo, hay otros detalles que encuentro en su código:

- En tu Switch estás captando el valor de la variable "opcion", la cual es de tipo entero, sin embargo la estás captando como si fuese un Char, en otras palabras: quítale las comillas simples a case '1':... case '2':... y haz que queden así: case 1:... case 2:... Solo le pondrás comillas cuando "opcion" sea de tipo char. Sin embargo, puede que te preguntes, ¿por qué no te dio error si "opcion" es un entero y '1' es un caracter? Pues porque es posible comparar un número con un char, lo que sucede que el compilador comparará el número dado con el valor numérico del char en su código ascii de dicho caracter. De la forma en que lo tienes jamás entrará a tu switch ni se ejecutará ninguna función.

- En el case 1: de tu switch estás creando un arreglo de la siguiente manera: int num[]=new int[0]; es decir, tu arreglo será creado con tamaño cero (length = 0), por lo que no se ejecutará ningún FOR, puesto que sus condiciones de parada (a<num.length) tanto "a" como "num.length" tienen valor cero. Intente darle un tamaño inicial al arreglo que está creando, por ejemplo, como hizo en el caso 2.

Un GigaSaludo!!!
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 Felipe De Jesús
Val: 29
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Arreglos sin retorno solo menu

Publicado por Felipe De Jesús (17 intervenciones) el 13/10/2016 20:53:12
Gracias a ambos ya me corre, en necesario el Do While para que haga su ciclo.

Ahora tengo otra duda como puedo hacer para que el caso 2 y caso 3 me tomen los datos almacenos de caso 1 y asi pueda continuar con datos y no ingresar nuevos datos para el caso 2 y caso 3.

Muchas gracias nuevamente...

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

Arreglos sin retorno solo menu

Publicado por YYanes (144 intervenciones) el 13/10/2016 21:13:45
Con respecto a tu segunda duda:

lo único que tienes que hacer es darle un mayor alcance (ámbito) al arreglo, es decir, declararlo antes de entrar al do-while, en el mismo lugar en donde creaste e inicializaste tus variables iniciales.
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 Felipe De Jesús
Val: 29
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Arreglos sin retorno solo menu

Publicado por Felipe De Jesús (17 intervenciones) el 14/10/2016 10:00:07
Aqui ya no te entendi, haber segun yo tengo todas mis variables en el global para que se puedan almacenar y poder utilizarlas en el caso 2 y tres aqui va el codigo:

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
import java.util.*;
 
public class OperacionesLEBEEO {
 
	public static void main (String [] args) {
 
		Scanner leer=new Scanner (System.in);
		 boolean elNumero = false;
		int num[]=new int[6];
	    int a = 0;
		int opcion;
		int numero1 = 0;
 
		do{
		System.out.println("=================================");
		System.out.println("Menú");
		System.out.println("Para Buscar elige:   '1' ");
		System.out.println("Para Editar elige:   '2' ");
		System.out.println("para Eliminar elige: '3' ");
		System.out.println("Para Salir elige:    '0'");
		System.out.println("==================================");
		opcion= leer.nextInt();
 
 
		switch (opcion){
		case 1:
 
	        for(a=0;a<6;a++){
	            System.out.print("Ingrese un número: ");
	            num[a]=leer.nextInt();
	        }
	        for(a=0;a<6;a++){
	            System.out.println(num[a]);
	        }
	        System.out.print("Buscar un número: ");
	        numero1=leer.nextInt();
 
	        for(a=0;a<6;a++){
	            if (numero1 == num[a]) {
	                System.out.println("El número :"+num+" esta en el indice "+a+", en la posicion "+(a+1));
	                elNumero = true;
	            }
	        }
 
	        if(elNumero==false) {
	            System.out.println("El numero :"+a+" no esta");
	        }
					break;
		case 2:
 
 
			System.out.print("¿Qué número desea cambiar?: ");
			int a1=leer.nextInt();
			System.out.print("Por cual número lo quiere?: ");
			int b=leer.nextInt();
			num[b]=a1;
			System.out.print("El arreglo queda asi: ");
			for(int b1=0;b1<numero1;b1++){
			System.out.print(""+num[b1]);
			}
			   if(elNumero==false) {
		            System.out.println("El numero :"+a+" no esta");
		        }
			break;
		case 3:
 
			System.out.println("Ingrese la posicion que desea eliminar");
			int a2 = new Scanner(System.in).nextInt();
			Object[] arreglo1 = null;
			if (a2 == arreglo1.length - 1) {
			arreglo1[a2] = 0;
			} else {
 
			for (int b1 = a2 + 1; b1 < arreglo1.length; b1++) {
			arreglo1[b1 - 1] = arreglo1[b1];
			}
 
			arreglo1[arreglo1.length - 1] = 0;
 
 
			for (int b1 = 0; b1 < arreglo1.length; b1++) {
			System.out.print(arreglo1[b1] + " - ");
			}
 
			System.out.println();
			}
			break;
		default:
			System.out.println("Ingrese un opción válida");
 
		}//Fin del Switch
		}
		while (opcion !=0);
 
 
 
		System.out.println();
		System.out.println("--------------------------------------");
		System.out.println("| Gracias por usar mi programa       |");
		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

Arreglos sin retorno solo menu

Publicado por YYanes (144 intervenciones) el 14/10/2016 13:54:45
Pues eso es lo que le sugería precisamente, declarar las variables de forma que tengan alcance para las funciones 2 y 3. Verá, el "ámbito" de las variables se refiere a su alcance, es decir, en qué secciones de código una variable estará disponible. Fuera de este ámbito, una variable no podrá ser accedida (no existe). Por ejemplo:

1
2
3
4
5
6
7
public int Funcion(int a){
if(a<10){
  int ejemplo = a;
}
 
return ejemplo;
}

El código anterior da error, pues el ámbito de la variable "ejemplo" se limita solo al interior del IF, ya que fue creada dentro de éste, y por tanto, ya no existe cuando sale del mismo. Mientras que, si la declaras antes, su ámbito es mayor, y ya no habría error en el código, es decir:

1
2
3
4
5
6
7
8
public int Funcion(int a){
int ejemplo = 0; //crear la variable e inicializarla antes del IF para que su ámbito alcance hasta el RETURN
if(a<10){
  ejemplo = a;
}
 
return ejemplo;
}
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 felipe garcia
Val: 29
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Arreglos sin retorno solo menu

Publicado por felipe garcia (17 intervenciones) el 15/10/2016 20:26:29
segun yo ya declare todo afuera de los if y lo deje como variable global, y con lo que comentas me queda mas claro la funcion de una variable pero me podrias guiar en mi código en decirme donde la estoy regando para hacerlo mejor.

Si me corre y hace opcopn que yo elija pero sigue sin almacenarme los datos para usarlo en case 1 y case 2.
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