Foros del Web » Programación para mayores de 30 ;) » Java »

Utilizar variables de un metodo en otro

Estas en el tema de Utilizar variables de un metodo en otro en el foro de Java en Foros del Web. Tengo una duda, acerca de los metodos en java, y como usar variables que ya se definieron en un metodo, en otro metodo. Mi ejercicio ...
  #1 (permalink)  
Antiguo 29/10/2010, 20:23
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 8 meses
Puntos: 0
Pregunta Utilizar variables de un metodo en otro

Tengo una duda, acerca de los metodos en java, y como usar variables que ya se definieron en un metodo, en otro metodo.

Mi ejercicio de practica es un programa que en un metodo tiene que hacer lo siguiente:

1.-Dar de alta alumnos que el usuario quiera.
2.- Añadirle la edad,semestre,cantidad de materias y materias que va a cursar

Y en otro, un metodo para cambiarlo de semestre.

En ese otro metodo, iva a hacer que se imprimiera la lista de alumnos por medio de un for, y utilizando la variable cantalum (cantidad de alumnos) y dentro, ir poniendo los demas arreglos, pero al momento en que pongo la variable, cantalum (ya definida segun yo, en el metodo anterior), me marca error al poner la variable.

Supuse que siendo publica el metodo daralta(), no habria problema, pero veo que no.

¿Alguien puede aclarar mi duda?

El extracto del problema es el siguiente :

Código:
package main;


public class arreglox{

	public void daralta(){
			System.out.println("Cuantos alumnos vas a dar de alta");
			int cantalum=Leer.datoInt();
			String nombres[] = new String [cantalum];
			int datosdelestud[][]= new int[cantalum][2];
			int limit = cantalum -1;
			int i,z;
			for(i=0;i<=limit;i++){
			System.out.println("Ingresa el nombre del alumno que esta en la posicion "+i);
			nombres[i] = Leer.dato();
			System.out.println("Inserta la edad del alumno ");
			datosdelestud[i][0]=Leer.datoInt();
			System.out.println("Inserta el semestre del alumno");
			datosdelestud[i][1]=Leer.datoInt();
			}
			for(i=0;i<=limit;i++){
				System.out.println("Cuantas materias llevara el alumno "+nombres[i]);
				int cantidadmat = Leer.datoInt();
				int limitmat = cantidadmat-1;
				String materias[][] = new String[cantalum][cantidadmat];
				for(z=0;z<=limitmat;z++){
					System.out.println("Inserta el nombre de la materia #"+i);
					materias[i][z]=Leer.dato();
					i=i++;
				}
				
			}
			}
	
	public void eliminaralum(){
		
	}
	
	public void cambiarsem(){
		int i;
		System.out.println("Lista de alumnos");
		for(i=0;i<=cantalum;i++){
			
		}
		
	}
	
	public void cambiarmat(){
		
	}

}
  #2 (permalink)  
Antiguo 29/10/2010, 21:27
Avatar de BLEND  
Fecha de Ingreso: marzo-2006
Mensajes: 97
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: Utilizar variables de un metodo en otro

Que tal fernandosg, veras, cuando creas una variable dentro de un metodo la puedes definir como publica, pero no la puedes utilizar en otro metodo, ya que dicha variable solamente estara viva dentro de ese metodo.

Ahora, lo que yo te diria para que esa variable sea vista desde varios metodos, es que la definas como una variable global, es decir, que la definas fuera de los metodos y de forma publica.

Espero te sirva.


Salu2...
__________________
.·´¯`·-> (3l£NÐ <-·´¯`·.
  #3 (permalink)  
Antiguo 29/10/2010, 21:35
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Utilizar variables de un metodo en otro

Cita:
Iniciado por BLEND Ver Mensaje
Que tal fernandosg, veras, cuando creas una variable dentro de un metodo la puedes definir como publica, pero no la puedes utilizar en otro metodo, ya que dicha variable solamente estara viva dentro de ese metodo.

Ahora, lo que yo te diria para que esa variable sea vista desde varios metodos, es que la definas como una variable global, es decir, que la definas fuera de los metodos y de forma publica.

Espero te sirva.


Salu2...
Ya lo intente, pero al definirla como global, inicialmente seria nula , ya que se necesita de un metodo ( en este caso daralta() ) , para introducir el dato dentro de la variable.

Cuando la defino como global, a pesar de que esa variable global la utilice dentro del metodo daralta() , al momento de pasar al siguiente metodo, no me guarda los cambios que se realizaron en el metodo anterior, solamente como esta inicializada de manera global.

Ya intente esa manera, pero no me funciono
  #4 (permalink)  
Antiguo 30/10/2010, 02:36
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Utilizar variables de un metodo en otro

Cita:
Iniciado por BLEND
cuando creas una variable dentro de un metodo la puedes definir como publica


Dentro de un método no puedes definir una variable pública, ni privada ni nada de nada. Como sólo tiene existencia dentro del método, NO se define el ámbito, ya que va implícito. Es local.

Cita:
Iniciado por fernandosg
a pesar de que esa variable global la utilice dentro del metodo daralta() , al momento de pasar al siguiente metodo, no me guarda los cambios que se realizaron en el metodo anterior, solamente como esta inicializada de manera global.
Esto no tiene ningún sentido, ni siquiera entiendo qué quieres decir pero está mal, porque si la variable es "global" (en Java ese no término no tiene sentido) al modificarla desde un método SÍ adquiere el nuevo valor.

http://www.icomputo.com/content/vari...tantes-en-java

De verdad que alucino, queréis programar en java sin haber perdido ni un minuto en aprender las cosas básicas.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #5 (permalink)  
Antiguo 30/10/2010, 07:59
 
Fecha de Ingreso: octubre-2010
Mensajes: 21
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Utilizar variables de un metodo en otro

Hola Fernando,

Antes que nada, en java no existen variables globales ni locales, aunque de cierta forma podamos utilizarlas pero no con esas denominaciones, por eso apoyo lo que dice Xerelo,

Ahora bien..

Para resolver tu problema, prueba de esta forma:

Crea una variable de instancia de la clase, por ejemplo asi:

String nombres[]; y no le asignes ningun valor todavia...

Luego dentro de tu metodo daralta() no vuelvas a definir esta variable, directamente asignala con los valores, así:

this.nombres[] = new String [cantalum];

fijate que le quite el String de el frente, String nombres[] = new String [cantalum];

Luego este atributo nombres[] podras acceder desde los demas metodos, eliminaralum() o cambiarsemes()

No te olvides que debes crear un metodo main() donde instancies tu clase, y desde donde ejecutes tus metodos daralta(), eliminaralum() etc, etc...

por ejemplo

metodo main(){
arreglox miClase = new arreglox();

arreglox.daralta();
...
...
}

Espero te sirva,

Saludos

Marcos Jara
[URL="http://tutorialjava7.wordpress.com"]http://tutorialjava7.wordpress.com[/URL]
  #6 (permalink)  
Antiguo 30/10/2010, 11:47
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Utilizar variables de un metodo en otro

Cita:
Iniciado por tutorialjava Ver Mensaje
Hola Fernando,

Antes que nada, en java no existen variables globales ni locales, aunque de cierta forma podamos utilizarlas pero no con esas denominaciones, por eso apoyo lo que dice Xerelo,

Ahora bien..

Para resolver tu problema, prueba de esta forma:

Crea una variable de instancia de la clase, por ejemplo asi:

String nombres[]; y no le asignes ningun valor todavia...

Luego dentro de tu metodo daralta() no vuelvas a definir esta variable, directamente asignala con los valores, así:

this.nombres[] = new String [cantalum];

fijate que le quite el String de el frente, String nombres[] = new String [cantalum];

Luego este atributo nombres[] podras acceder desde los demas metodos, eliminaralum() o cambiarsemes()

No te olvides que debes crear un metodo main() donde instancies tu clase, y desde donde ejecutes tus metodos daralta(), eliminaralum() etc, etc...

por ejemplo

metodo main(){
arreglox miClase = new arreglox();

arreglox.daralta();
...
...
}

Espero te sirva,

Saludos

Marcos Jara
[URL="http://tutorialjava7.wordpress.com"]http://tutorialjava7.wordpress.com[/URL]
Ya veo, ya lo habia solucionado de otra manera, pero esta forma no la recordaba , muchas gracias por la ayuda, lo probare ahorita.
xD, disculpa por lo del metodo global, me quede en otros lenguajes, y ya se me hace costumbre .

Saludos, y gracias
  #7 (permalink)  
Antiguo 30/10/2010, 11:53
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Utilizar variables de un metodo en otro

Gracias a los que opinaron, despues pongo si se soluciono

Última edición por fernandosg; 30/10/2010 a las 12:00
  #8 (permalink)  
Antiguo 30/10/2010, 13:02
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Utilizar variables de un metodo en otro

No me funciono, me marca error en la linea:

this.nombres[] = new String [cantalum];
this.datosdelestud[][] = new int [cantalum][2];

Te paso el codigo, no se si la declaracion de los arreglos y las variables esten bien:

Código:
public class arreglox{
String nombra;
String nombres[];
int datosdelestud[][];
int cantalum;
	
	public void daralta(){
			System.out.println("Cuantos alumnos vas a dar de alta");
			cantalum=Leer.datoInt();
			this.nombres[] = new String [cantalum];
			this.datosdelestud[][] = new int [cantalum][2];
			int limit = cantalum -1;
			int i,z;
			for(i=0;i<=limit;i++){
			System.out.println("Ingresa el nombre del alumno que esta en la posicion "+i);
			nombres[i] = Leer.dato();
			System.out.println("Inserta la edad del alumno ");
			datosdelestud[i][0]=Leer.datoInt();
			System.out.println("Inserta el semestre del alumno");
			datosdelestud[i][1]=Leer.datoInt();

(CONTINUA....)
			}
Gracias por la ayuda tutorialjava
  #9 (permalink)  
Antiguo 30/10/2010, 22:10
Avatar de Migu3  
Fecha de Ingreso: septiembre-2010
Mensajes: 13
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Utilizar variables de un metodo en otro

Es sencillo de solucionar en el metodo donde necesitas la variable haces esto
public class arreglox{
int Variablequenesecitas;

public void daralta(int VariablequeNecesitaas){//esta variable no es la misma de arriba y no importa el nombre que le coloques

this.VariablequeNececitas=VariablequeNecesitas;

//por eso aca la igualamos y asi toma valores globales con la referencia this.

recuerda que al llamar al metodo debes agregarle la variable asi:

daralta(5); //un entero por que arriba declare que le daria un entero.
espero que te sirva
  #10 (permalink)  
Antiguo 30/10/2010, 22:45
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Utilizar variables de un metodo en otro

Muchas gracias migue, por descuido mio, se me olvido poner una respuesta, pero ya lo habia solucionado tal cual lo escribiste, fue poca humildad la mia, de no dejar como se resolvio el problema, me ausente un rato de la lap.

Tengo otra duda migue, no se si me pudieras aclarar esta duda :

Esa clase arreglox , es una subclase de practica , en otro archivo tengo lo siguiente :

Código:
public class practica extends arreglox{
		public void menu(){
			System.out.println("Escribe la opcion que deseas: \t" +
					"1)Dar de alta  2)Eliminar alumno  3)Imprimir alumnos  4)Cambiar materias");
		int op=Leer.datoInt();
		switch(op){
		case 1:
			this.daralta();
			break;
		case 2:
			this.eliminaralum();
			break;
		case 3:
			this.cambiarsem();
			break;
		case 4:
			this.cambiarmat();
			break;
		default:
			break;
		}
		}
Todo bien en esto, me deja abrir los metodos de la clase arreglox, pero ¿como le hago para , dentro de la clase "arreglox", poder regresarme a "practica"? En practica me permite , por que herede de arreglox, pero de arreglox no puedo regresar a practica,¿como pudiera hacer esto?
  #11 (permalink)  
Antiguo 30/10/2010, 23:43
Avatar de Migu3  
Fecha de Ingreso: septiembre-2010
Mensajes: 13
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Utilizar variables de un metodo en otro

si puedes enviamie el codigo para entenderte mejor [email protected] - [email protected].

Bueno creo que te da error por que estas haciendo una redondancia por que llamas a un metodo de practica que ya estas usando.

lo que puedes hacer es crear un objeto en el metodo menu asi
public void menu(){
practica a=new practica();
.
.
.
y poner una opcion mas al menu
y siquiere agregarle una de salir
.
.
case 5:
a.practica(); // o al metodo de practica que nesecites osea remplazas la palabra practica
break;
case 6;
System.out.println(" Se a Salido del Sistema Correctamente");
System.exit(0);
default:
break;
  #12 (permalink)  
Antiguo 31/10/2010, 00:25
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Utilizar variables de un metodo en otro

Saludos migu3 , gracias por la ayuda.
Mira, te paso los 2 codigos, y me dices que estoy haciendo mal, o que es inecesario:

Arreglox:
Código:
package main;
public class arreglox{
public String nombra;
int limitalum;
int limit;
int  cantidadmats;
int cantidadmat;
	public  arreglox daralta(){
		
			System.out.println("Cuantos alumnos vas a dar de alta");
			int cantalum=Leer.datoInt();
			String nombres[] = new String [cantalum];
			int datosdelestud[][]= new int[cantalum][2];
			this.limit = cantalum -1;
			int i,z;
			for(i=0;i<=limit;i++){
			System.out.println("Ingresa el nombre del alumno que esta en la posicion "+i);
			nombres[i] = Leer.dato();
			System.out.println("Inserta la edad del alumno ");
			datosdelestud[i][0]=Leer.datoInt();
			System.out.println("Inserta el semestre del alumno");
			datosdelestud[i][1]=Leer.datoInt();
			}
			for(i=0;i<=limit;i++){
				System.out.println("Cuantas materias llevara el alumno "+nombres[i]);
				this.cantidadmat = Leer.datoInt();
				//ABAJO DE ESTA LINEA, ES EL LIMITE DE MATERIAS QUE YA SE AÑADIERON
				int limitmat = cantidadmat-1;
				String materias[][] = new String[cantalum][cantidadmat];
				for(z=0;z<=limitmat;z++){
					System.out.println("Inserta el nombre de la materia #"+i);
					materias[i][z]=Leer.dato();
					i=i++;
				}
				System.out.println("Se ha finalizado de agregar el alumno, 1)Cambiar semestre 2)cambiar materias 3)Eliminar alumnos 4)salir");
				int oper = Leer.datoInt();
			switch(oper){
			case 1:
				this.cambiarsem(limitmat,limitalum, cantalum, nombres, datosdelestud, materias);
				break;
			case 2:
				this.cambiarmat(cantidadmats,limitmat,limitalum,cantidadmat, cantalum, nombres, datosdelestud, materias);
				break;
			case 3:
				this.eliminaralum(limitmat, cantalum, nombres, datosdelestud, materias);
				break;
			case 4:
				return daralta();
			default:
				break;
			}
								}
			return daralta();
			}
	
	public void eliminaralum(int limitmat,int cantalum, String nombres[], int datosdelestud[][], String materias[][]){
		
	}
	
	public void cambiarsem(int limitmat,int cantalum,int limitalum, String nombres[], int datosdelestud[][], String materias[][]){
		int i;
		System.out.println("ID \t Lista de alumnos \t Edad \t Semestre \t Materias");
		limitalum = limit;
		for(i=0;i<=limitalum;i++){
			System.out.print(i+"\t"+nombres[i]+"\t \t"+datosdelestud[i][0]+"\t \t"+datosdelestud[i][1]);
		}		
		for(i=0;i<=limitalum;i++){
			int z;
			for(z=0;z<=limitmat;z++){
				System.out.print("\t"+materias[i][z]);
				i=i++;
			}
		}
		System.out.println("¿Cual usuario desea modificar? Recuerde el ID");
		int modfalum = Leer.datoInt();
		System.out.println("Ahora el usuario "+nombres[modfalum]+" procedera a cambiarse su semestre \n" +
				"el cual es "+datosdelestud[modfalum][1]);
		System.out.println("A que semestre te gustaria cambiarlo?");
		int semnew = Leer.datoInt();
		datosdelestud[modfalum][1]=semnew;
		System.out.println("Alumno ha sido cambiado de semestre");
	}
	
	public void cambiarmat(int cantidadmats,int limitmat,int cantalum,int limitalum, int cantidadmat, String nombres[], int datosdelestud[][], String materias[][]){
		System.out.println("Bienvenido a la opcion cambiar materias, a continuacion se imprimira la lista de estud");
		int i;
		limitalum = limit;
		System.out.println("ID \t Lista de alumnos \t Edad \t Semestre \t Materias");
		for(i=0;i<=limitalum;i++){
			System.out.print(i+"\t"+nombres[i]+"\t \t"+datosdelestud[i][0]+"\t \t"+datosdelestud[i][1]);
		}		
		for(i=0;i<=limitalum;i++){
			int z;
			for(z=0;z<=limitmat;z++){
				System.out.print("\t"+materias[i][z]);
				i=i++;
			}
		}
		System.out.println("Que alumno deseas cambiar? Pon el ID");
		int cambiar=Leer.datoInt();
		System.out.println("Lista de materias del alumno "+nombres[cambiar]);
		for(i=0;i<=limitmat;i++){
			System.out.println(materias[cambiar][i]);
		}
		System.out.println("1)Si deseas añadir materias 2)Si deseas quitar materias");
		int opmat=Leer.datoInt();
		if(opmat==1){
			System.out.println("Cuantas materias te gustaria añadir?");
			int añadirmat = Leer.datoInt();
			this.cantidadmat = cantidadmat + añadirmat;
			for(i=0;i<=cantidadmat;i++){
//Lo de abajo segun yo, debe de identificarme los puestos vacios, como es un string, lo puse con comilla doble
				if(materias[cambiar][i]!=""){
					System.out.println("Escribe el nuevo nombre de la materia");
					materias[cambiar][i]=Leer.dato();
				}
			}
			//IMPRIMIR LA NUEVA LISTA
			
		}else if(opmat==2){
			
		}
	}

}
Practica

Código:
package main;

import java.util.Arrays;

//Aqui van los paquetes


public class practica extends arreglox{
		public void menu(){
			System.out.println("Escribe la opcion que deseas: \t" +
					"1)Dar de alta  2)Eliminar alumno  3)Imprimir alumnos  4)Cambiar materias");
		int op=Leer.datoInt();
		switch(op){
		case 1:
			this.daralta();
			break;
		case 2:
			this.eliminaralum();
			break;
		case 3:
			this.cambiarsem();
			break;
		case 4:
			this.cambiarmat();
			break;
		default:
			break;
		}
		}
		
		
		public void eliminaralum(){
			
		}
		
		public void cambiarsem(){
			
		}
		
		public void cambiarmat(){
			
		}
	
	public static void main (String args[]){
		practica acc = new practica();
		acc.menu();
	}

}

A parte tengo otra duda (y disculpa que te este usando de consultor, no tengo contactos de la carrera, y mis compañeros van peor que yo en esto xD) en Arreglox, en el metodo cambiarmat() , en teoria, deberia de permitirme(por el momento lo qe he escrito) añadir mas materias al arreglo, el problema, es que cuando cambio en este metodo la variable cantidadmat (que ya habia añadido en el metodo daralta() ) , no me añade los nuevas materias.

Por ej:

Si en daralta() pongo 2 materias, y en cantidadmat() pongo otras 4, por medio de un for, me identifique cuales posiciones del arreglo estan vacios, (no se si este bien el codigo que puse para identificar arreglos vacios) y me deje meter mas variables al arreglo, pero no, solo me deja poner 2 espacios ya añadidos en el metodo daralta(), y no me deja meter los otros 4 que supuestamente en teoria me dejaria meter.

Saludos, y pues disculpa el pedacero de codigo que hice y revuelto :S, pero ahorita por cuestiones que se viven en mi ciudad (mexicano, y pues ha habido algo de balaceras) las clases se han suspendido algunos dias :S, dejandome en 0.

Saludos, y gracias por leer el mensaje
  #13 (permalink)  
Antiguo 31/10/2010, 06:45
Avatar de Migu3  
Fecha de Ingreso: septiembre-2010
Mensajes: 13
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Utilizar variables de un metodo en otro

Código:
package main;

import java.util.Scanner;

public  class arreglox {

public String nombra;
    int limitalum;
    int limit;
    int  cantidadmats;
    int cantidadmat;
    Scanner reader = new Scanner(System.in);

    public  arreglox daralta(){
        
        Practica a=new Practica();

        System.out.println("Cuantos alumnos vas a dar de alta");
	int cantalum=reader.nextInt();
	String nombres[] = new String [cantalum];
	int datosdelestud[][]= new int[cantalum][2];
	this.limit = cantalum -1;
	int i,z;
	for(i=0;i<=limit;i++){
            System.out.println("Ingresa el nombre del alumno que esta en la posicion "+i);
            nombres[i] = reader.next();
            System.out.println("Inserta la edad del alumno ");
            datosdelestud[i][0]=reader.nextInt();
            System.out.println("Inserta el semestre del alumno");
            datosdelestud[i][1]=reader.nextInt();
        }
	for(i=0;i<=limit;i++){
            System.out.println("Cuantas materias llevara el alumno "+nombres[i]);
            this.cantidadmat = reader.nextInt();
            //ABAJO DE ESTA LINEA, ES EL LIMITE DE MATERIAS QUE YA SE AÑADIERON
            int limitmat = cantidadmat-1;
            String materias[][] = new String[cantalum][cantidadmat];
                for(z=0;z<=limitmat;z++){
                        System.out.println("Inserta el nombre de la materia #"+i);
                        materias[i][z]=reader.next();
                        i=i++;
                }
            System.out.println("Se ha finalizado de agregar el alumno, \n1)Cambiar semestre \n2)cambiar materias \n3)agregar Alumnos \n4)salir \n5)Regresar al Menu Principal");
            int oper = reader.nextInt();

            switch(oper){

                    case 1:
                            this.cambiarsem(limitmat,limitalum, cantalum, nombres, datosdelestud, materias);
                            break;
                    case 2:
                            this.cambiarmat(cantidadmats,limitmat,limitalum,cantidadmat, cantalum, nombres, datosdelestud, materias);
                            break;
                    case 3:
                            this.eliminaralum(limitmat, cantalum, nombres, datosdelestud, materias);
                            break;
                    case 4:
                            return daralta();
                    case 5:
			a.menu();
			break;
                    default:
                            break;
                    }
                                                            }
                    return daralta();
    }

    public void eliminaralum(int limitmat,int cantalum, String nombres[], int datosdelestud[][], String materias[][]){

    }

    public void cambiarsem(int limitmat,int cantalum,int limitalum, String nombres[], int datosdelestud[][], String materias[][]){
            int i;
            System.out.println("ID \t Lista de alumnos \t Edad \t Semestre \t Materias");
            limitalum = limit;
            for(i=0;i<=limitalum;i++){
                    System.out.print(i+"\t"+nombres[i]+"\t \t"+datosdelestud[i][0]+"\t \t"+datosdelestud[i][1]);
            }
            for(i=0;i<=limitalum;i++){
                    int z;
                    for(z=0;z<=limitmat;z++){
                            System.out.print("\t"+materias[i][z]);
                            i=i++;
                    }
            }
		System.out.println("¿Cual usuario desea modificar? Recuerde el ID");
		int modfalum =reader.nextInt();
		System.out.println("Ahora el usuario "+nombres[modfalum]+" procedera a cambiarse su semestre \n" +
				"el cual es "+datosdelestud[modfalum][1]);
		System.out.println("A que semestre te gustaria cambiarlo?");
		int semnew = reader.nextInt();
		datosdelestud[modfalum][1]=semnew;
		System.out.println("Alumno ha sido cambiado de semestre");
	}

	public void cambiarmat(int cantidadmats,int limitmat,int cantalum,int limitalum, int cantidadmat, String nombres[], int datosdelestud[][], String materias[][]){
		System.out.println("Bienvenido a la opcion cambiar materias, a continuacion se imprimira la lista de estud");
		int i;
		limitalum = limit;
		System.out.println("ID \t Lista de alumnos \t Edad \t Semestre \t Materias");
		for(i=0;i<=limitalum;i++){
			System.out.print(i+"\t"+nombres[i]+"\t \t"+datosdelestud[i][0]+"\t \t"+datosdelestud[i][1]);
		}
		for(i=0;i<=limitalum;i++){
			int z;
			for(z=0;z<=limitmat;z++){
				System.out.print("\t"+materias[i][z]);
				i=i++;
			}
		}
		System.out.println("Que alumno deseas cambiar? Pon el ID");
		int cambiar=reader.nextInt();
		System.out.println("Lista de materias del alumno "+nombres[cambiar]);
		for(i=0;i<=limitmat;i++){
			System.out.println(materias[cambiar][i]);
		}
		System.out.println("1)Si deseas añadir materias 2)Si deseas quitar materias");
		int opmat=reader.nextInt();
		if(opmat==1){
			System.out.println("Cuantas materias te gustaria añadir?");
			int añadirmat = reader.nextInt();
			this.cantidadmat = cantidadmat + añadirmat;
			for(i=0;i<=cantidadmat;i++){
//Lo de abajo segun yo, debe de identificarme los puestos vacios, como es un string, lo puse con comilla doble
				if(materias[cambiar][i]!=""){
					System.out.println("Escribe el nuevo nombre de la materia");
					materias[cambiar][i]=reader.next();
				}
			}
			//IMPRIMIR LA NUEVA LISTA

		}else if(opmat==2){

		}
	}



}


Código:
package main;

import java.util.Scanner;

public class Practica {

    Scanner reader = new Scanner(System.in);

	public void menu(){
            arreglox a = new arreglox();
            System.out.println( "Escribe la opcion que deseas: " +
                                    "\n     1)Dar de alta  \n     2)Eliminar alumno  \n     3)Imprimir alumnos  \n     4)Cambiar materias");
		int op=reader.nextInt();
		switch(op){
		case 1:
			a.daralta();
			break;
		case 2:
			this.eliminaralum();
			break;
		case 3:
			this.cambiarsem();
			break;
		case 4:
			this.cambiarmat();
			break;
		default:
			break;
		}
		}


		public void eliminaralum(){

		}

		public void cambiarsem(){

		}

		public void cambiarmat(){

		}

	public static void main (String args[]){
		Practica acc = new Practica();
		acc.menu();
	}

}

cambie tu leer. por reader como yo lo uso al igual que el dato por next
creo que lo hace por que escribes en .txt utiliza un ide es mas sencillo te recomiendo netbeans
  #14 (permalink)  
Antiguo 31/10/2010, 11:58
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Utilizar variables de un metodo en otro

Muchas gracias migu3, y utilizo un IDE , el eclipse, pero tendre en cuenta ciertas cosas que modificaste.

Vi mi error y tome nota asi que te agradezco de nuevo la ayuda .

Ya me solucionaste el problema de llamar el metodo, y si puedes ayudarme (que ya hiciste bastante xD) es aclararme la duda de como utlizar el arreglo de las materias (en el metodo cambiarmat() ) para añadir mas materias al estudiante.

Te copio y pego lo que puse en el post anterior:

en Arreglox, en el metodo cambiarmat() , en teoria, deberia de permitirme(por el momento lo qe he escrito) añadir mas materias al arreglo, el problema, es que cuando cambio en este metodo la variable cantidadmat (que ya habia añadido en el metodo daralta() ) , no me añade los nuevas materias.

Por ej:

Si en daralta() pongo 2 materias, y en cantidadmat() pongo otras 4, por medio de un for, me identifique cuales posiciones del arreglo estan vacios, (no se si este bien el codigo que puse para identificar arreglos vacios) y me deje meter mas variables al arreglo, pero no, solo me deja poner 2 espacios ya añadidos en el metodo daralta(), y no me deja meter los otros 4 que supuestamente en teoria me dejaria meter.

Saludos, y gracias por la ayuda
  #15 (permalink)  
Antiguo 31/10/2010, 20:21
Avatar de Migu3  
Fecha de Ingreso: septiembre-2010
Mensajes: 13
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Utilizar variables de un metodo en otro

Simplemente creas el arreglo como global para toda la clase

String arreglo [] ;

y en el metodo donde lo usas por primera vez lo incias al principio y le das un tamaño y lo modificas asi:

arreglo=new String [5]; //asi le das tamaño y conq ue la aya declarado global te lee loscambios en cualqueir lugar.

!! Tener cuidado con no sobre escribir el arreglo y es mejor que definas el arreglo muy grande
pero si estas creado el mismo arreglo cada vez que creas un alumno estas guardando mal.

ademas tu delimitas tu arreglo y con la variable culitum algo asi y cuando vuelves al metodo lo redimencionas al redimencionarlo asi lo formateas osea le borras todo por eso o creas un arreglo grande o si ya te enseñaron a crar listas de objetos seria mucho mejor mas facil

Última edición por Migu3; 31/10/2010 a las 20:29
  #16 (permalink)  
Antiguo 31/10/2010, 22:58
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Utilizar variables de un metodo en otro

Muchisimas gracias migu3 , y si, ya quedo bien el codigo, solo que cuando lo redimensiono se formatea, investigare sobre lo que mencionas de listas de objetos.

Muchas gracias, este ejercicio lo invente para ir practicando, y aprovechar el puente sin clases en la universidad.

Saludos
  #17 (permalink)  
Antiguo 01/11/2010, 08:03
Avatar de Migu3  
Fecha de Ingreso: septiembre-2010
Mensajes: 13
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Utilizar variables de un metodo en otro

si no sabes usar lista puedes crear igual que otro metodo que hiciste una matriz y el da un tamaño fijo

púede ser de 10*5 para que te quepan 5 materias max y 10 alumnos max

y cuando pidas imprimir que te imprima lamatriz hasta donde j (->) sea =0
if(j!=0){
//imprimir lista
}

pero si averiguas sobre listas es mucho mas facil

Etiquetas: metodo, variables, utilidades
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:31.