Programmieren, Java

Hallo, ich bräuchte eure Hilfe bei folgender Aufgabe

  1. a) Erstellen Sie eine Klasse Kreis. Ein Kreis sei gekennzeichnet durch
    einen Mittelpunkt, einen Radius sowie eine Farbe (z. B. blau). Der
    Mittelpunkt besteht aus einer x- und einer y-Koordinate.
    Neben diesen Attributen enthält die Klasse get- und set- Methoden für die
    vier Attribute sowie drei Konstruktoren.
    Der erste Konstruktor bekommt für alle Attribute der Klasse einen Wert
    überwiesen und initialisiert damit die Attribute. Der zweite Konstruktor
    bekommt nur die Koordinaten des Mittelpunktes sowie einen Wert für den
    Radius übergeben und initialisiert damit die Attribute. Die Farbe wird in
    diesem Fall auf „farblos“ gesetzt. Der dritte Konstruktor ist parameterlos und
    enthält keine Anweisung.

Das Programm habe ich schon angefangen zu schreiben und sieht folgendermaßen aus:

public class Kreis {

private double x, y;
private double radius;
private String farbe;
private double mittelpunkt;

public Kreis(double x, double y, double radius, String farbe) {
this.x = x;
this.y = y;
this.radius = radius;
this.farbe = farbe;
x = 3;
y = 4;
radius = 7;
farbe = „blau“;
}

public double getMittelpunkt(double x, double y) {
return mittelpunkt;

}
}

Meine Frage: WIe kann ich den Mittelpunkt in der return Anweisung in folgender Form ausgeben lassen: (x-Koord.;y-Koord)
und wie kann ich beim 2. Konstruktor sowohl den Mittelpunkt als auch den Radius zurückgeben? Dann müsste ich ja 2 get-Anweisungen in einer Zeile haben, wobei ich dann wieder einen Fehler erhalte.

Hallo, ich bin dann mal net so ^^
ABER bedenke, dass wenn du Aufgaben bekommst du die selber lösen soltest (oder du lässt diese Information in Zukunft einfach weg ^^)

also es gibt ein class POINT
http://download.oracle.com/javase/1.4.2/docs/api/jav…
und eine class Color
http://download.oracle.com/javase/1.4.2/docs/api/jav…
ich denke wenn du nur den namen der Farbe brauchst reicht auch der string

public class Kreis {

private Point mittelPkt = new Point();
private double radius;
private String farbe = „farblos“;

Kreis(double xKoordM, double yKoordM, double radius
, String farbe) {
this.mittelPkt.x = x;
this.mittelPkt.y = y;
this.radius = radius;
this.farbe = farbe;
}

Kreis(double xKoordM, double yKoordM, double radius) {
this.mittelPkt.x = x;
this.mittelPkt.y = y;
this.radius = radius;
}

Kreis() {
/*
* leerer constructor
*/
}

public void setMittelpktAsPoint (Point m) {
this.mittelPkt = m;
}

public void setMittelpktAsKoord (double x,double y) {
this.mittelPkt.x = x;
this.mittelPkt.y = y;
}

public void setColor(String c){
this.farbe = c
}

public void setRadius (double r)
this.radius = r;
}

public Point getMittelpktAsPoint {
return this.mittelPkt
/*
*da es ein Point ist kannst du das Ergebnis als koord ausgeben und * als String und als einzelnen wert bsp siehe unten
*/
}

public String getFarbe () {
return this.farbe;
}

public double getRadius () {
return this.radius;
}

public void main (String args[]) {
/* TEST */
Kreis k1 = new Kreis();
Kreis k2 = new Kreis(2,2,2,„gelb“);
Kreis k3 = new Kreis (2,2,2);
System.out.println(k1.getFarbe());
System.out.println(k2.getFarbe());
System.out.println(k3.getFarbe());

}

}

so das dürfte es soweit gewesen sein ^^ probier es einfach aus und les dir mal die api durch, dann wirds klar (auf Kommentare usw. verzcihte ich mal, die kannst du ja selber einfügen, wenn du dich damit befasst hast.)

Erstmal vielen Dank für die ausführliche Antwort.
Jedoch bekomme ich, wenn ich den Programmcode bei Netbeans einfüge ein paar Fehlermeldung.
Die 1. ist direkt oben beim Deklarieren der Klasse Point ‚cannot find symbol‘
dann ab ‚public void set radius‘ alle set und get Methoden und unten die System.out.println
‚class, interface, or enum expected‘
Leider weiß ich nicht wie ich diese Fehler beheben kann, ich hoffe du kannst mir da weiterhelfen
lg

Hi,

da du schon einen Quellcode hast (was ich übrigens nicht gut finde dass du einen kopierten Code als deinen vorm Lehrer präsentierst!) helf ich dir nur noch mit Leitfragen weiter:

  1. Wie ist eine Methode in Java aufgebaut?

  2. Welchen Typ haben die Variablen x und y und in der Klasse Point?

  3. Welchen Typ haben deine Übergabewerte xKoordM und yKoordM?

  4. Woher nimmst du in den Konstruktoren die Variablen x und y?

  5. Wie sagst du einer Klasse: „Ich brauche eine Klasse aus dem package java.awt“ ?

  6. Was kommt immer am Ende einer Anweisung?

  7. Wie sieht eine Main-Methode aus?

Wenn du all diese Fragen beantwortet hast und die Antworten auf den Quellcode angewendet hast, kann man die Main-Methode ausführen.

Alle Fehler im Sourcecode kann man schnell lösen. Dir fehlen einfach die Grundlagen.

Ist nicht böse gemeint aber tu dir selbst ein Gefallen, arbeite ein Grundlagentutorial durch, lies ein Buch über Java oder frag deinen Lehrer ob er sich mittags Zeit nimmt und dir noch mal alles von Grund auf erklärt. Nur so wirst du auch in den Prüfungen bestehen können.

Grüße

Das Problem ist ich habe keinen Lehrer, der mir das beibringen kann. Ich bin an der Uni und studiere mechatronik und muss nur eine Klausur in Informatik schreiben, auf die ich mich grade vorbereite.
Leider hatte ich nicht das Glück, einen Professor in dem Fach zu haben, der den Stoff verständlich rüberbringen konnte.

Hi,

wie gesagt, das war nicht böse gemeint.

Das Problem ist ich habe keinen Lehrer, der mir das beibringen
kann. Ich bin an der Uni und studiere mechatronik und muss nur
eine Klausur in Informatik schreiben, auf die ich mich grade
vorbereite.

Deshalb hab ich ja 3 Möglichkeiten genannt. Du musst halt selbst dein Lehrer werden.

Leider hatte ich nicht das Glück, einen Professor in dem Fach
zu haben, der den Stoff verständlich rüberbringen konnte.

Hatte ich auch nicht, aber es gibt ja das Internet mit Tutorials, „Java ist auch eine Insel“ uvm. :wink:

Für den Schnelleinstieg:
„Java in 21 Tagen“. Das kann man schnell durcharbeiten und hat zumindest schon mal ein bisschen was an Grundlagen. Ist aber nicht das beste…

Grüße

Ich habe ja bereits eine DVD durchgearbeitet ‚Jetzt lerne ich Java‘ von Helge Maus, jedoch habe ich trotzdem noch Probleme das theoretische Wissen bei konkreten Aufgaben anzuwenden.
Ich habe jetzt folgendes vor die Klasse geschrieben ‚import java.awt.*;‘ und trotzdem erhalte ich noch eine Fehlermeldung bei der Klasse Point.

Hi, (auch ich freu mich ab und zu über eine Begrüßung)

ja natürlich bekommst du noch Fehler

Das hier ist die Klasse Point:

http://kickjava.com/src/java/awt/Point.java.htm

und das sind deine Konstruktoren:

Kreis(double xKoordM, double yKoordM, double radius
, String farbe) {
this.mittelPkt.x = x;
this.mittelPkt.y = y;
this.radius = radius;
this.farbe = farbe;
}

Kreis(double xKoordM, double yKoordM, double radius) {
this.mittelPkt.x = x;
this.mittelPkt.y = y;
this.radius = radius;
}

einmal stellt sich die Frage: Woher kommt das x was du der Variable x von deinem Objekt mittelPkt zuweist (y genauso)

die zweite Frage ist: du übergibst 2 double xKoordM und yKoordM in deinen Konstruktor. Wenn ich den Gedanken hinter diesen Konstruktoren richtig verstehe willst du die beiden double in mittelPkt.x und mittelPkt.y einlesen.

Jetzt guck dir die Klasse Point und deren Variablen x und y an. Dann wird dir klar was schief läuft :wink:

Grüße (darüber freu ich mich auch…)

Hi,
ich habe jetzt noch das am Anfang des Programms hinzugefügt:
private int x;
private int y;

Die Klasse Point habe ich mir jetzt 3 mal durchgelesen und weiß immer noch nicht woher die anderen Fehlermeldungen kommen.
lg

Hi,

hi

ich habe jetzt noch das am Anfang des Programms hinzugefügt:
private int x;
private int y;

ok jetzt hast du 2 int nicht initialisiert sind und die auch nie gesetzt werden.

Was du willst ist aber ein Konstruktor der x und y als Übergabewerte hat nicht einfach nur Variablen irgendwo deklarieren.

Momentan übergibst du doubles in deinem Konstruktor du musst aber int’s übergeben.

Lös dich etwas von der verbuggten Vorlage die du von D(ragon)K(1988) hast.

Die Klasse Point habe ich mir jetzt 3 mal durchgelesen und
weiß immer noch nicht woher die anderen Fehlermeldungen
kommen.

Was bekommst du denn noch für Fehlermeldungen außer dass x und y nicht initialisiert wurden?

lg

Grüße

hi, vielen Dank erstmal, hab jetzt die doubles durch ints ersetzt.
jetzt habe ich noch fehlermeldungen im folgenden Teil

public void setRadius (double r)
this.radius = r;
}

public Point getMittelpktAsPoint {
return this.mittelPkt;
/*
*da es ein Point ist kannst du das Ergebnis als koord ausgeben und * als String und als einzelnen wert bsp siehe unten
*/
}

public String getFarbe () {
return this.farbe;
}

public double getRadius () {
return this.radius;
}

public void main (String args[]) {
/* TEST */
Kreis k1 = new Kreis();
Kreis k2 = new Kreis(2,2,2,„gelb“);
Kreis k3 = new Kreis (2,2,2);
System.out.println(k1.getFarbe());
System.out.println(k2.getFarbe());
System.out.println(k3.getFarbe());

Bei der methode setRadius steht ‚missing method body or declare abstract‘
Danach steht fast in jeder zeile ‚class, interface or enum expected‘

lg

Hi,

Ok gleich haben wirs :smile:

gucken wir uns eine Beispielmethode an:

int bspwert;

public int getBspwert(){

return bspwert;
}

so und nun gucken wir uns 2 Methoden an die mir direkt ins Auge gesprungen sind:

public void setRadius (double r)
this.radius = r;
}

public Point getMittelpktAsPoint {
return this.mittelPkt;
}

Was fehlt hier?

Das sollte dann dein Problem lösen.

Wegen der Ausgabe kann ich dir die toString() Methode der Klasse Point empfehlen. Die sollte (fast) genau das machen was du haben willst :wink:

Grüße

hi,
Hier haben die beiden Klammern gefehlt, jedoch bekomm ich in der Zeile immer noch eine Fehlermeldung

public Point getMittelpktAsPoint () {
return this.mittelPkt;

wahrscheinlich weil das hier auch noch falsch ist obwohl ich die Klasse importiert habe:
private Point mittelPkt = new Point();

lg

hi

private Point point = new Point();

ist schon richtig so.

Bei der einen Methode hat eine geschweifte Klammer gefehlt und bei der anderen haben die Runden klammern gefehlt.

vlt fehlt irgendwo am ende eines Befehls noch ein Semikolon?

Poste ma deinen Quelltext, bin zwar gleich weg aber ich guck dann morgen ma drüber.

Grüße

hi, hier ist der programmcode

import java.awt.*;
public class Kreis {
public static void main(String args[]) {
private Point mittelPkt = new Point();
private double radius;
private String farbe = „farblos“;
private int x;
private int y;

Kreis(double xKoordM, double yKoordM, double radius
, String farbe) {
this.mittelPkt.x = x;
this.mittelPkt.y = y;
this.radius = radius;
this.farbe = farbe;
}

Kreis(int xKoordM, int yKoordM, int radius) {
this.mittelPkt.x = x;
this.mittelPkt.y = y;
this.radius = radius;
}

Kreis() {
/*
* leerer constructor
*/
}

public void setMittelpktAsPoint (Point m) {
this.mittelPkt = m;
}

public void setMittelpktAsKoord (int x,int y) {
this.mittelPkt.x = x;
this.mittelPkt.y = y;
}

public void setColor(String c){
this.farbe = c;
}

public void setRadius (double r)
this.radius = r;
}

public Point getMittelpktAsPoint () {
return this.mittelPkt;
/*
*da es ein Point ist kannst du das Ergebnis als koord ausgeben und * als String und als einzelnen wert bsp siehe unten
*/
}

public String getFarbe () {
return this.farbe;
}

public double getRadius () {
return this.radius;
}

public void main (String args[]) {
/* TEST */
Kreis k1 = new Kreis();
Kreis k2 = new Kreis(2,2,2,„gelb“);
Kreis k3 = new Kreis (2,2,2);
System.out.println(k1.getFarbe());
System.out.println(k2.getFarbe());
System.out.println(k3.getFarbe());

}

}

lg

Es lag daran dass oben noch eine 2. main-Methode stand. Jetzt ist alles fehlerfrei.
Vielen dank für deine Hilfe :smile:
lg

Eine kurze Frage noch: Kann ich bei diesem Teil nicht jeweils das ‚this.‘ weglassen? Wenn ich das tu bekomm ich nämlich auch keine Fehlermeldung:
public void setMittelpktAsPoint(Point m) {
this.mittelPkt = m;
}

public void setMittelpktAsKoord(int x, int y) {
this.mittelPkt.x = x;
this.mittelPkt.y = y;
}

public void setColor(String c) {
this.farbe = c;
}

public void setRadius(double r) {
this.radius = r;
}

public Point getMittelpktAsPoint() {
return this.mittelPkt;

}

public String getFarbe() {
return this.farbe;
}

public double getRadius() {
return this.radius;
}

Hi

3 Fehler sind noch im Sourcecode

  1. Was soll „die erste“ Main Methode?

  2. Guck dir alle Methoden nochmal genau an. Da fehlt wo noch ne öffnende Klammer.

  3. public void main(String args[]) so deklariert man keine Main-Methode

Grüße

Hi,
jetzt hats funktioniert. bei der main methode fehlte noch ein static :smile:
vielen dank
lg

Hi,
kann man denn jetzt die this befehle unten im Programmcode entfernen?
lg