Frage von Wissenswert91, 48

Variable von einer Klasse in eine andere Übergeben?

Hallo zusammen,

ich programmiere gerade in Java und habe ein kleines Problem.

ich habe 3 neue Klassen erzeugt. Nur die erste Klasse besitzt eine main-Methode. Nun wollte ich die in der main Methode erzeuge Zufallszahl an die dritte Klasse übergeben um dort etwas damit zu machen.

Leider weiß ich nicht wie das geht.

Anbei der Sourcecode:

Hier die Klasse mit der Main-Methode:

package Klassen;

import java.awt.Graphics;
import javax.swing.JPanel;

public class HauptFenster {

    
    public static void main(String[] args) {
        
        Fenster fenster = new Fenster();
        Rechteck panel = new Rechteck();
        
        fenster.add(panel);
        
        while(true){
        
            int high = (int)(Math.random()*200);
            int width = (int)(Math.random()*150);
            
        }
    }
}

Hier die Klasse 3:

package Klassen;

import java.awt.Graphics;
import javax.swing.JPanel;

public class Rechteck extends JPanel {
    
public int zufall;
    
    public Rechteck(){
        
        this.setSize(500, 500);
    }

    public void paint (Graphics g){
        g.fillRect(120, 100, 100, 130);
    }
}

Die Beispiel soll nur zur Übung dienen.

MfG

Expertenantwort
von KnusperPudding, Community-Experte für Java, 19

Eigentlich macht man sowas nicht in der main Methode. Und eine weitere Main-Methode in deiner Klasse3 macht eigentlich auch keinen Sinn..

Das was du aktuell wohl machen willst, geht ohne große Codeänderung bei dir einfach so:

package Klassen;

import java.awt.Graphics;
import javax.swing.JPanel;

public class HauptFenster {


public static void main(String[] args) {

Fenster fenster = new Fenster();
Rechteck panel = new Rechteck();

fenster.add(panel);

while(true){

int high = (int)(Math.random()*200);
int width = (int)(Math.random()*150);
panel.zufall = high;
}
}
}

Auch wenn es nur ein Beispiel sein mag, solltest du von beginn an versuchen, deine Klassen Strukturiert zu halten und dir eine gewisse Sauberkeit anzugewöhnen. - Das sag ich nicht um dich zu ärgern, eher viel mehr, deshalb weil es dein Code ist, und du darauf dein Wissen aufbaust. 

Sprich: hast du Instanz-Variablen schreibe dafür eine getter und setter Methode.

Konkret bei dir in Klasse3:

getZufallszahl();
setZufallszahl(int zahl);

Vermeide viel Code in der main Methode, denn diese soll eigentlich nur dazu dienen deine Anwendung auszuführen.

Antwort
von Willibergi, 27

In Java macht man das üblicherweise mit der Getter-Setter-Methode.
Informier dich am besten mal im Internet darüber.
LG Willibergi

Antwort
von yooolo123, 29

du musst in der Main klasse ne statische globale variable erstellen...
also public static int random;
und dann eben random den wert der zahl übergeben...
in der 3. Klasse greifst du mit Main.random darauf zu.
wenn du was ni weißt frag nochmal hab grad nicht so viel zeit :)

Kommentar von rmnstr ,

globale variablen für so etwas zu verwenden ist eine sehr schlechte idee. gewöhn dir das gar nicht erst an :P

Kommentar von CrystalixXx ,

Kann man so machen, wenn man in der prozeduralen Programmierung hängen geblieben ist. Wenn man aber schon eine objektorientierte Sprache nutzt, dann sollte man darauf verzichten und die Parameter von Methoden oder Eigenschaften nutzen.

Antwort
von Wissenswert91, 18

Die Variablen in der main-Methode habe ich erstellt:

package Klassen;

import java.awt.Graphics;
import javax.swing.JPanel;

public class HauptFenster {

public static int high;
public static int width;

public static void main(String[] args) {

Fenster fenster = new Fenster();
Rechteck panel = new Rechteck();

fenster.add(panel);

while(true){

high = (int)(Math.random()*200);
width = (int)(Math.random()*150);

}
}
}

Nun weiß ich aber nicht wie ich das mit "Main. ..." in die dritte Klasse schreiben muss.

In der dritten Klasse sollten die Werte high und width von der ersten Klasse an x und y in der dritten Klasse übergeben werden.

Klasse:

package Klassen;

import java.awt.Graphics;
import javax.swing.JPanel;

public class Rechteck extends JPanel {

int x;
int y;

public Rechteck(){

this.setSize(500, 500);
}

public void paint (Graphics g){

g.fillRect(x, y, 100, 130);

}
}

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten