como enviar un entero de una clase a otra con el método get set
hola amigos mi pregunta es como enviar un entero de una clase a otra con el método get set,
saludosss
- cesar quijada's blog
- Inicie sesión o regístrese para enviar comentarios
hola amigos mi pregunta es como enviar un entero de una clase a otra con el método get set,
saludosss
Comentarios
class Una { Otra o;
Otra o;
void metodo() {
o.setEntero( 1 );
}
}
class Otra {
void setEntero( int entero ) {
System.out.println("Entero recibido: "+ entero );
}
}
me marca un error
al momento de compilar la clase Otra me da el siguiente error, aclaro que las dos clases estan en pestañas diferentes dentro del mismo paquete
saludosss
encontre este ejemplo que menciono en esta pagina
este ejemplo dice lo que habia preguntado lo unico que quiero lograr es pasar un entero sin multiplicarlo
https://www.youtube.com/watch?v=G7CLldZirkQ
saludos
re: Comoenviar un entero
El código funciona. Solo te falta el
o= new Otra();
dentro del método "metodo".public static void main(String[] args) {
Una u=new Una();
u.metodo();
}
}
class Una {
Otra o;
void metodo() {
o=new Otra();
o.setEntero( 1 );
}
}
class Otra {
void setEntero( int entero ) {
System.out.println("Entero recibido: "+ entero );
}
}
y eso?
Y eso de qué sirve? cada vez que llamas
metodo
, se crea una instancia deOtra
y se le pasa un entero. Ah y como es variable de instancia, se queda guardada la última instancia...Bueno supongo que es para aprender o algo así.
si es cierto
ya probe tu programa y si funciona si es a si como queria entenderlo :) cuando compilo la clase control me da el resultado del entero y todo va bien.
el programa funciona bien pero al momento de compilar tambien la clase Otra me marca el siguiente error: class does not have a main method agregue el metodo main y ya compilan los dos
public static void main(String[] args) {
}
gracias saludosss
es para aprender
si solo para aprender saludos
variable multiplicada de metodo get and set
hola amigos haciendo los ejemplos que me pasaron a qui y buscando por internet hice este programa (la clase enviar y la clase recibir en diferentes ventanas) usando los metodos get - set,
la duda es:
que en la clase enviar no puedo hacer que la variable multiplicador se multiplique por la variable num al momento de hacer clic en el jbutton.
lo que quiero lograr es que al hacer clic en el jbutton me de como resultado 8 en la clase recibir y mostrarlo en System.out.println("el numero recibido es "+transferencia_recibir.getNum());
a qui el programa saludosssss y gracias
package transferencia;
public class enviar extends javax.swing.JFrame {
int num;
int multiplicador;
public enviar() {
initComponents();
}
public enviar(int a){
num = a;
}
public void setNum(int a){
num = a;
}
public int getNum(){
return num*multiplicador; // a qui deseo que se multipique al hacer clic en el jbutton
}
@SuppressWarnings("unchecked")
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
multiplicador=8; // a qui es donde le asigno el valor de 8 a la variable multiplicador para que sea multiplicada con la variable num. y me de
//el 8 como resultado en la clase recibir
System.out.println(multiplicador);
}
public static void main(String args[]) {
/* Set the Nimbus look and feel */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new enviar().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
// End of variables declaration
}
///////////////////////////////////////////////////////////////////////////////////////////// esta es la clase recibir
package transferencia;
public class recibir {
public static void main(String[] args) {
enviar transferencia_recibir = new enviar();
transferencia_recibir.setNum(1); // este valor de 1 multiplica por 1 para que no afecte
System.out.println("el numero recibido es "+transferencia_recibir.getNum()); // a qui deseo recibir el 8 mandado desde la clase enviar al dar clic
// en el jbutton como mencione al momento de compilar el programa
}
}
El método main es el punto de
El método main es el punto de entrada de tu programa. En tu código tienes dos: uno donde creas un objeto enviar y muestras la ventana y otro donde creas otro objeto enviar, llamas al método setNum e imprimes con System.out.println. Estos son dos programas independientes y no tienen relación uno con otro ( es como si iniciaras notepad y paint y quisieras que lo que pasa en uno se reflejara en el otro )
Para hacer lo que quieres, tienes que poner el código en un solo método main,
public static void main(String args[]) {
/* Set the Nimbus look and feel */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
enviar e = new enviar()
e.setVisible(true);
e.setNum(1);
}
});
}
Ahora el tema se complica un poco porque estás usando una ventana, que corre en otro "hilo de ejecución" por lo tanto si pones el println debajo del "invoke later" se va a ejecutar de inmediato y va a imprimir 0 ( porque el multiplicador es 0 y 1 x 0 = 0 ) Esto se debe a que aún no has presionado el botón que va a ponerle el valor de 8.
Me parece que te beneficiaría más primero entender y que te quede bien claro como funcionan las llamadas entre métodos y luego puedes agregarle más complejidad usando una interfaz gráfica. Una tercera opción sería que estos dos programas se comunicaran realmente entre sí que es posible con algún protocolo de red o con mediante el sistema de archivos, pero esto es aún más avanzado.
Para el ejemplo de que un número multiplique a otro en dos clases distintas sin interfaz gráfica podría ser así:
private int numero;
private int multiplicador;
public void inicializaMultiplicador( ) {
this.multiplicador = 8;
}
public void setNumero( int n ) {
this.numero = n;
}
public int getResultado() {
return this.multiplicador * this.numero;
}
}
class OtraClase {
public static void main( String ... args ) {
Multiplicador m = new Multiplicador();
m.inicializaMultiplicador();
m.setNumero( 1 );
System.out.println( m.getResultado() ); // imprime 8 cuando ejecutas "OtraClase"
}
}
En ese ejemplo no hay más que un main y la ejecución se realiza línea por línea.
Espero que esto te sirva.
p.d. En Java se siguen ciertas convenciones para los nombres de las clases, variables, métodos, etc, esto es solo cuestión de estilo y se recomienda seguir, en el código qu epuse estan los ejemplos de como nombrarlos ( la clase con mayúscula, camelCase en vez de separado_asi etc. )
Por cierto, hacer esto mismo
Por cierto, hacer esto mismo con una interfaz gráfica no es muy distinto. Se puede usar la misma clase Multiplicador pero en vez de poner la lógica en el método main, se pone en el cuerpo del actionListener
Se vería así:
import java.awt.BorderLayout;
class Ventana {
JFrame frame = new JFrame();
JButton calcular = new JButton("Calcular");
JTextField resultado = new JTextField();
Multiplicador m = new Multiplicador();
public Ventana() {
calcular.addActionListener( ae -> {
m.inicializaMultiplicador();
m.setNumero( 1 );
resultado.setText( Integer.toString(m.getResultado()));
});
resultado.setEditable(false);
frame.add( resultado, BorderLayout.NORTH );
frame.add( calcular );
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible( true );
}
public static void main( String ... args ) {
Ventana v = new Ventana();
}
}
gracias por responder mi duda
si la verdad es que estoy intentando aprender el metodo set get y se me a complicado pero voy a tratar pirmero con tu ejemplo y despues buscar mas informacion por internet para poder entenderlo mejor
un gran saludo y muchas gracias por tus respuestas