Rechteck

orangata

Mitglied
Die Aufgabe lautet:
Für diese Aufgabe benötigen Sie die vorgegebene Datei RechteckZeichner.java. Implementieren Sie eine Klasse Rechteck. Die Klasse Rechteck besitzt die Attribute
• breite vom Typ int,
• hoehe vom Typ int,
• farbe vom Typ String.
Implementieren Sie eine Klasse A4 mit einer main-Methode, die
• zuerst ein Objekt namens rechteck der Klasse Rechteck erzeugt,
• dann nacheinander jedem Attribut einen zulässigen, beliebigen Wert zuweist (siehe unten)
• und anschließend die Werte des Rechteck-Objekts auf der Konsole ausgibt.
• Fügen Sie außerdem als letzte Anweisung die folgende Zeile ein: RechteckZeichner.draw(rechteck);
Kommentieren Sie Ihr Programm und beachten sie folgende Regelungen:
• Zulässige Werte für breite und hoehe sind Werte aus {1, 2, . . . , 500}. Zulässige Werte für farbe
sind schwarz, blau, rot, gelb, gruen und orange.
• Gestalten Sie die Konsolenausgaben des Programms benutzerfreundlich.
Hinweis: In dieser Aufgabe sollen ausnahmsweise alle Attribute nach aussen sichtbar sein.

Java:
import java.awt.Graphics;
import java.awt.Graphics2D; 
import java.awt.Color;
import javax.swing.*; 
import java.util.ArrayList;

class RechteckZeichner extends JPanel {

    static int width = 600;
    static int height = 600;
    static Rechteck r;

    private static Color getColor(String c) {
		if(c.equalsIgnoreCase("schwarz")) {
	    	return Color.black;
		} else if(c.equalsIgnoreCase("blau")) {
	    	return Color.blue;
		} else if(c.equalsIgnoreCase("rot")) {
	    	return Color.red;
		} else if (c.equalsIgnoreCase("gruen")) {
	    	return Color.green;
		} else if (c.equalsIgnoreCase("gelb")) {
	    	return Color.yellow;
		} else if (c.equalsIgnoreCase("orange")) {
	    	return Color.orange;
		} else {
	    	return Color.black;
		}
    }

    protected void paintComponent(Graphics g) { 
		super.paintComponent(g); 
		g.setColor(getColor(r.farbe));
		int breite = Math.min(width - 10, Math.abs(r.breite));
		int hoehe = Math.min(height - 10, Math.abs(r.hoehe));
		int x = (width-breite)/2;
		int y = (height-hoehe)/2;
		g.fillRect(x, y, r.breite, r.hoehe);
    } 

    static void draw(Rechteck rect) {
		r = rect;
		JFrame f = new JFrame(); 
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
		f.setSize(width, height); 
		f.add(new RechteckZeichner()); 
		f.setVisible(true); 
    }
}
Da ich immer noch ein absoluter Anfänger bin , hier erst einmal ein paar dumme Fragen:
1. schaffe ich mit meiner nein-Methode den Einstieg
2. deklariere ich die Variablen ?

Vielen Danke für mögliche Antworten
 

Fab1

Top Contributor
zu 1. verstehe ich nicht, meinst du statt "nein" die "main" Methode? Sofern du das meinst, kann man das nicht sagen, da du keine hast, zumindest hast du keine gepostet.;)

zu 2. Du deklarierst Variablen. (aber stell deine Frage genauer, glaube nicht das du das meinst)

Sofern, dass allerdings der komplette Code für deine Aufgabe ist, dann fehlt da noch sehr viel :eek:
 
Ich habe auch mit der Bearbeitung dieser Aufgabe Probleme.

Hier ist mein Ansatz:
Java:
public class Rechteck {
	public int breite;
	public int hoehe;
	public String farbe;
}
Ich weiß nicht, wie ich fortfahren soll. Könnt ihr mir helfen?
 

orangata

Mitglied
Java:
public class Rechteck 
{
    public int breite;
    public int hoehe;
    public String farbe;
{
public static void main (String[] args)
{
import java.awt.Graphics;
import java.awt.Graphics2D; 
import java.awt.Color;
import javax.swing.*; 
import java.util.ArrayList;
 
class RechteckZeichner extends JPanel {
 
    static int width = 600;
    static int height = 600;
    static Rechteck r;
 
    private static Color getColor(String c) {
        if(c.equalsIgnoreCase("schwarz")) {
            return Color.black;
        } else if(c.equalsIgnoreCase("blau")) {
            return Color.blue;
        } else if(c.equalsIgnoreCase("rot")) {
            return Color.red;
        } else if (c.equalsIgnoreCase("gruen")) {
            return Color.green;
        } else if (c.equalsIgnoreCase("gelb")) {
            return Color.yellow;
        } else if (c.equalsIgnoreCase("orange")) {
            return Color.orange;
        } else {
            return Color.black;
        }
    }
 
    protected void paintComponent(Graphics g) { 
        super.paintComponent(g); 
        g.setColor(getColor(r.farbe));
        int breite = Math.min(width - 10, Math.abs(r.breite));
        int hoehe = Math.min(height - 10, Math.abs(r.hoehe));
        int x = (width-breite)/2;
        int y = (height-hoehe)/2;
        g.fillRect(x, y, r.breite, r.hoehe);
    } 
 
    static void draw(Rechteck rect) {
        r = rect;
        JFrame f = new JFrame(); 
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        f.setSize(width, height); 
        f.add(new RechteckZeichner()); 
        f.setVisible(true); 
    }
}

So, ähnlich, oder?
 
Für den zweiten Teil der Aufgabe habe ich diesen Ansatz hier:
Java:
public class A4 {
	public static void main(String[] args) {
	Rechteck r = new Rechteck();
	r.breite = 0;
	r.hoehe = 0;
	r.farbe = "";
	for(int i=1;i<=500;i++){
	}
	for(int k=1;k<=500;k++){
	}
	int recht = 0;
	int rechteck = 0;
	do {
	
		rechteck = r.breite * r.hoehe;
	}while(recht>=1);
		RechteckZeichner.draw(r);
		System.out.println(rechteck);
	
	}
}
Ist der Ansatz mit den Schleifen richtig? Oder muss ich einen ganz anderen Weg einschlagen?
 
D

Dow Jones

Gast
Y2Jerichoholic ist schon auf dem richtigen Weg, aber bei Orangata sieht es noch etwas wirr aus. Also machen wir das mal langsam: Ihr braucht insgesamt drei Klassen mit den Namen RechteckZeichner, Rechteck und A4. Die legt ihr am besten jede in einem eigenen File ab, welches genauso heisst wie die Klasse ("RechteckZeichner.java", "Rechteck.java" und "A4.java"). Der Quellcode für die Klasse RechteckZeichner ist schon vorgegeben, und den Quellcode für die Klasse Rechteck hat Y2Jerichoholic ja auch schon richtig gepostet. Bleibt noch die Klasse A4, also schauen wir uns die mal genau an.

In der Aufgabe heisst es:
Implementieren Sie eine Klasse A4...
Wir müssen also ersteinmal die Klasse namens A4 anlegen. Das ist leicht, da muss man sich nicht viel Streß mit machen:
Java:
public class A4 {

}

...mit einer main-Methode,
Die main-Methode wird später beim Starten des Programms ausgeführt und stellt das eigentliche Hauptprogramm dar. Damit Java diese Methode auch als main-Methode erkennen kann gibt es für die main-Methode ein festgelegtes aussehen:
Java:
public class A4 {

     public static void main(String[] args) {

     }

}
Hinweis an Orangata: Bei dir schaut es so aus, als hättest du versucht sämtliche Klassen und Methoden irgendwie zusammenzuwurschteln. Das wird so nicht funktionieren. Schreibe den Code lieber ordentlich, also jede Klasse in eine eigene Datei, und innerhalb der Klassen (also innerhalb der äußersten { }-Klammern) können dann die Methoden stehen).

die
• zuerst ein Objekt namens rechteck der Klasse Rechteck erzeugt,
Java:
public class A4 {

     public static void main(String[] args) {

          Rechteck rechteck = new Rechteck();

     }

}
Wir erzeugen hier ein Object (also soetwas wie eine Variable) mit Namen rechteck vom Typ Rechteck. Das kann man so machen, weil Java zwischen Gross- und Kleinschreibung unterscheidet. Tatsächlich ist es sogar üblich das Klassennamen mit einem Grossbuchstaben beginnen und Object- (bzw. Variablen-)namen mit einem Kleinbuchstaben.

• dann nacheinander jedem Attribut einen zulässigen, beliebigen Wert zuweist (siehe unten)
Java:
public class A4 {

     public static void main(String[] args) {

          Rechteck rechteck = new Rechteck();

          rechteck.breite = 100;
          // ... hier bitte selber die hoebe setzen ...
          // ... hier bitte selber die farbe setzen ...
     }

}
Übrigens, Y2Jerichoholic: 0 ist kein zulässiger Wert, wie weiter unten in der Aufgabenstellung zu lesen ist. ;-)

• und anschließend die Werte des Rechteck-Objekts auf der Konsole ausgibt.
Hier ist es mir ehrlich gesagt schleierhaft was du mit den Schleifen erreichen möchtest... Ein Rechteck hat drei Werte, nämlich breite, hoehe und Farbe. Die können wir problemlos in drei Programmzeilen einzelnen setzen und in drei weiteren Programmzeilen auch wieder aus dem rechteck auslesen und auf der Konsole ausgeben (mit System.out.println(...)). Hattest du geplant das dein Programm noch irgendetwas zusätzliches macht, das nicht in der Aufgabenstellung steht?

Eure Klasse A4 sollte jetzt jedenfalls so aussehen:
Java:
public class A4 {

     public static void main(String[] args) {

          Rechteck rechteck = new Rechteck();

          rechteck.breite = 100;
          // ... hier bitte selber die hoebe setzen ...
          // ... hier bitte selber die farbe setzen ...

          System.out.println(rechteck.breite);
          // ... hier bitte selber die hoehe ausgeben ...
          // ... hier bitte selber die farbe ausgeben ...
     }

}

• Fügen Sie außerdem als letzte Anweisung die folgende Zeile ein: RechteckZeichner.draw(rechteck);
Das ist doch jetzt auch nur noch ein Kinderspiel für uns, oder? :D
Java:
public class A4 {

     public static void main(String[] args) {

          Rechteck rechteck = new Rechteck();

          rechteck.breite = 100;
          // ... hier bitte selber die hoebe setzen ...
          // ... hier bitte selber die farbe setzen ...

          System.out.println(rechteck.breite);
          // ... hier bitte selber die hoehe ausgeben ...
          // ... hier bitte selber die farbe ausgeben ...

          // ... hier bitte die angegebene Zeile einfuegen ...

     }

}

Jetzt noch ein paar Kommentare für den Lehrer in den Quellcode einfügen, und die println etwas "benutzerfreundlicher" gestalten (bisher werden ja nur Zahlen/farben ausgebeben, es wäre aber natürlich schöner, wenn da auch gleich dabeisteht das die ausgegebene Zahl z.B. die breite des Rechtecks sein soll).
 

bERt0r

Top Contributor
Wow dowjones, du solltest Java unterrichten :D
@ Y2Jerichoholic
Mit deinen Schleifen bist du da komplett auf dem falschen Dampfer. Du sollst überprüfen ob ein Wert zwischen 0 und 501 liegt. Überleg mal wie sowas abseits von Computertechnischen Begriffen genannt wird. Kristallkugel: O
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
laxla123 Rechteck programmieren Java Basics - Anfänger-Themen 4
I Viereck / Rechteck Prüfung innerhalb einem bestimmten Bereich Java Basics - Anfänger-Themen 2
M Rechteck wird nicht angezeigt Java Basics - Anfänger-Themen 3
J Kreis soll die gleiche Fläche wie das Rechteck haben wie mache ich das? Java Basics - Anfänger-Themen 3
L Wie vergrößere ich ein Rechteck in alle Richtungen um eins und bekomme dessen Rand? Java Basics - Anfänger-Themen 2
S Erste Schritte Java - Applet - Rechteck ständig versetzen Java Basics - Anfänger-Themen 14
GRAZZ0R MouseListener - Rechteck Bewegen Java Basics - Anfänger-Themen 1
S Erste Schritte Ein Rechteck aus Sternchen mit Wiederholungsanweisung erstellen Java Basics - Anfänger-Themen 2
J Rechteck zeichnen mit Canvas Java Basics - Anfänger-Themen 7
T Rechteck Programmieren Java Basics - Anfänger-Themen 4
F Klasse Rechteck definieren Java Basics - Anfänger-Themen 21
S Rechteck zeichnen Java Basics - Anfänger-Themen 2
M Erste Schritte Gefülltes Rechteck programmieren Java Basics - Anfänger-Themen 1
T GUI anstatt Bild schwarzes Rechteck gespeichert Java Basics - Anfänger-Themen 0
S Ein Rechteck soll an einer Seite gespiegelt werden. Java Basics - Anfänger-Themen 5
G Methoden Nicht überlappte teile eines Rechteck's Java Basics - Anfänger-Themen 9
T Rechteck Koolision Java Basics - Anfänger-Themen 4
X Rechteck Java Basics - Anfänger-Themen 2
I Rechteck Zeichnen Java Basics - Anfänger-Themen 9
M Farbiges Rechteck zeichnen Java Basics - Anfänger-Themen 2
F Rechteck/Quadrat getroffen? Java Basics - Anfänger-Themen 2
K Rechteck/Quadrat Java Basics - Anfänger-Themen 5
P Rechteck Zufallsverschiebung mit Abprallen Java Basics - Anfänger-Themen 12
M Umfang von Rechteck oder Kreis anhand der Parameter Java Basics - Anfänger-Themen 2
J Rechteck Java Basics - Anfänger-Themen 8
G Rechteck zeichen Java Basics - Anfänger-Themen 4
B Rechteck aus Sternen Zeichnen Java Basics - Anfänger-Themen 8
J itext - Rechteck in PdfCell Java Basics - Anfänger-Themen 2
E klasse für ein Rechteck schreiben Java Basics - Anfänger-Themen 25
K Rechteck mit einem Loch in dem Mitte Java Basics - Anfänger-Themen 11
B Swing Rechteck zeichnen Java Basics - Anfänger-Themen 14
H Rechteck ziehen bei einer Application Java Basics - Anfänger-Themen 2
Dilandau rechteck des applet inhalts als gif-datei speichern? Java Basics - Anfänger-Themen 2
R mit MouseDragged Rechteck verschieben. Java Basics - Anfänger-Themen 2
G Linie innerhalb Rechteck Java Basics - Anfänger-Themen 2
G dicke linie zeichnen bzw schräges rechteck füllen Java Basics - Anfänger-Themen 2
W Problem mit einem Programm Rechteck Fläche, Umfang Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben