Brauche Denkanstoß

Status
Nicht offen für weitere Antworten.

rumpi

Mitglied
Hallo,

ich möchte gern das Volumen und die Oberfläche von Körpern (Quader, Kugel, Zylinder) berechnen und diese dann vergleichen. Das soll folgende Form haben:



Ich weiß gar nicht, wo ich anfangen soll! Ich bin erstmal hier:

Code:
abstract class Körper implements Comparable {
	
	public abstract double volumen();
	public abstract double oberflaeche();
	public int compareTo(Object object){
		
	}
	public static void sort(Körper[] k){
		
	}
	public static void main (String[] args){
		Körper[] k = new Körper[6];
		k[0] = new Quader(3.0, 2.0, 1.0);		
	}
}

class Quader extends Körper{
	public Quader (){
		
	}
	public double volumen(){
		
	}
	public double oberflaeche(){
		
	}
	
		
}
class Zylinder extends Körper{
	
}
class Kugel extends Körper{
	
}

Könnt ihr mir nen Hinweis geben?

Gruß,
Rumpi
 

ARadauer

Top Contributor
wo ist konkret das Problem? Quader, Zylender und Kugel müssen die volumen und oberflache methode implementieren. Schreib mal diese Methoden.
 

rumpi

Mitglied
Code:
class Quader extends Körper{
   public Quader (){
      
   }
   public double volumen(){
      
   }
   public double oberflaeche(){
      
   }      
}

Ich weiß allerdings nicht wo ich die einzelnen Werte hernehmen soll, die dann das Volumen bilden.
 
S

SlaterB

Gast
tja, dann musst du wohl alle nötigen Attribute
wie Länge, Breite, Höhe, Durchmesser, Krümmungsradius, plancksche Wirkungskonstante und wer weiß noch alles dazumodellieren und im Konstruktor setzen

> new Quader(3.0, 2.0, 1.0);

da kommen dann die Werte her
 

ARadauer

Top Contributor
"Die Klassen sollen entsprechende Konstrukturen enthalten"

so zb

Code:
class Quader extends Körper{ 
         int laenge;
         int breite;
         int hoehe;
         public Quader (int laenge, int breite, int hoehe){
            this.laenge = laenge;
            this.breite = breite;
            this.hoehe = hoehe;
            
         } 
         public double volumen(){ 
            return laenge*breite*hoehe;
         } 
         public double oberflaeche(){ 
           .. usw... 
         }      
      }
 

rumpi

Mitglied
Code:
class Quader extends Körper{
	double laenge, breite, hoehe;
	public Quader(double laenge, double breite, double hoehe){
		this.laenge=laenge;
		this.breite=breite;
		this.hoehe=hoehe;
	}
	public double volumen(){
		return laenge*breite*hoehe;
	}
	public double oberflaeche(){
		return 2*(breite*laenge+breite*hoehe+hoehe*laenge);		
	}
}
class Zylinder extends Körper{
	double radius, hoehe;
	public Zylinder(double radius, double hoehe){
		this.radius=radius;
		this.hoehe=hoehe;
	}
	public double volumen(){
		return Math.PI*radius*radius*hoehe;
	}
	public double oberflaeche(){
		return 2*Math.PI*radius*(radius+hoehe);
	}
	
}
class Kugel extends Körper{
	double radius;
	public Kugel(double radius){
		this.radius=radius;
	}
	public double volumen(){
		return Math.PI*radius*radius*radius*(4/3);
	}
	public double oberflaeche(){
		return 4*Math.PI*radius*radius;		
	}
	
}

Jetzt noch ne andere Frage. Warum sollen denn in
Code:
public static void sort(Object[] k)
die Parameter sortiert werden?
 
S

SlaterB

Gast
gute Frage, was sollen wir jetzt raten?

dem/r Aufgabensteller/in ist keine interessantere Aufgabe eingefallen? ;)
 

rumpi

Mitglied
Hihi. Das das nicht lebensnotwendig war, ist mir klar.
Hätte besser gefragt "wie" ich das machen kann.
Geht es um die Parameter, die bei der Objecterzeugung mitgegeben werden? z.b. hier:
k[0] = new Quader(3.0, 2.0, 1.0);
 

ARadauer

Top Contributor
du könntest jetzt nach volumen oder oberfläche sortieren...
da du schon Comparable implementierst musst du nur noch entscheiden, was größer oder kleiner ist...

[qoute]
int compareTo(T o)Compares this object with the specified object for order. Returns a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.
[/quote]

zb so

Code:
public int compareTo(Körper o){ 
            if(volumen()>o.volumen())
                  return 1;
            if(volumen()<o.volumen())
               return -1;
            return 0;
            
         }
da musst du aber dann implements Comparable<Körper> implementieren, was eh besser ist ;-)

Wenn du das machst kannst du so zb sortieren..

Code:
         public static void sort(Körper[] k){ 
            Arrays.sort(k);
         }
 
S

SlaterB

Gast
> Geht es um die Parameter, die bei der Objecterzeugung mitgegeben werden? z.b. hier:
> k[0] = new Quader(3.0, 2.0, 1.0);

in der Aufgabe ist ein Beispiel-Arrray gegeben, welches du sortieren sollst
 

rumpi

Mitglied
Was genau sagt denn dieser Parameter <Körper> in dem Fall? Es funktioniert zwar, aber ich verstehe nicht warum...
 
S

SlaterB

Gast
> Was genau sagt denn dieser Parameter <Körper> in dem Fall?

welcher Parameter <Körper>?

in
> public static void sort(Körper[] k){
ist Körper[] k ein Körper-Array, nicht mehr und nicht weniger

> Ich soll also die k[0], k[1] usw sortieren? Nach dem Volumen also?

ein Array kann man nur ganz oder gar nicht sortieren, nicht jeden Wert einzeln,
nach Volumen, ja (edit: scheint nicht vorgegeben, dann kannst du es dir aussuchen)
 

rumpi

Mitglied
Ich verstehs immer noch nicht :cry:
Wie kann man so dumm sein^^
k[0], ... ,k[4], k[5] das sind doch alles Objecte. Und die stehen in dem Array k? Ist das so richtig?

Edit: Also an Stelle k[0] des Arrays steht ein Quader mit den Parametern (3.0,2.0,1.0). Steh dort das Volumen und die Oberfläche?
 
S

SlaterB

Gast
ein Quader-Objekt kannst du per volumen() nach seinem Volumen fragen, ja
 

rumpi

Mitglied
Ich müsste also mit sowas wie nem Sortierverfahren (bubblesort z.b.) ran?

Code:
boolean  sorted;
		do  {
			sorted  =  true;
			for  (int  i = 0;  i  <  k.length  -  1;  ++i)  {
				if  (k[i].compareTo(k[i  +  1])  >  0)  {
					Comparable<Körper>  tmp  =  k[i];
				k[i]  =  k[i  +  1];
				k[i  +  1]  =  (Körper)tmp;
				sorted  =  false;
				}
			}
		}  while  (!sorted);
 

rumpi

Mitglied
Das nimmt dann Quicksort, was nicht so schnell wie mein Bubblesort ist ;)
Aber ich muss noch mal fragen. Wo nach wird denn nun sortiert?
Oder anders gefragt, was steht jetzt explizit in k[0] drin?
 
S

SlaterB

Gast
du kennst doch dein Körper-Interface und damit alle Methoden, die zur Verfügung stehen,
siehe immer noch letztes Posting von ARadauer
 

rumpi

Mitglied
Also wenn ich jetzt richtig verstanden habe, steht in k[0] nach wie vor 3.0,2.0,1.0 drin.
Und erst wenn ich k[0].volumen(); aufrufe, wird das Volumen berechnet!?
 

rumpi

Mitglied
Code:
public static void sort(Körper[] k){
		
		Arrays.sort(k);
		/*boolean  sorted;
		do  {
			sorted  =  true;
			for  (int  i = 0;  i  <  k.length  -  1;  ++i)  {
				if  (k[i].compareTo(k[i  +  1])  >  0)  {
					Comparable<Körper>  tmp  =  k[i];
				k[i]  =  k[i  +  1];
				k[i  +  1]  =  (Körper)tmp;
				sorted = false;
				}
			}
		}  while  (!sorted);*/
	}
	public static void main (String[] args){
		Körper[] k = new Körper[6];
		k[0] = new Quader(3.0, 2.0, 1.0);
		k[1] = new Quader(1.0,2.0,2.0);
		k[2] = new Zylinder(3.0,2.0);
		k[3] = new Zylinder(2.0,3.0);
		k[4] = new Kugel(2.0);
		k[5] = new Kugel(4.0);
		System.out.println(k[5].volumen());
	}

Wenn ich Arrays.sort(k) mache, kriege ich keine Ausgabe, aber auch keine Fehlermeldung.
Wenn ich den Bubblesort nehme (den ich temp mal auskommentiert habe), kriege ich die korrekte Berechnung. Woran liegt das?
 
S

SlaterB

Gast
deine main() enthält keinen sort-Aufruf und was für eine Ausgabe meinst du?
> System.out.println(k[5].volumen());
wird doch wohl immer etwas ausgeben

----

bei mir wird bei beiden Varianten alles vorher und nachher sauber ausgegeben und gleich sortiert, ich empfehle

Code:
	public static void main(String[] args) {
		Körper[] k = new Körper[6];
		k[0] = new Quader(3.0, 2.0, 1.0);
		k[1] = new Quader(1.0, 2.0, 2.0);
		k[2] = new Zylinder(3.0, 2.0);
		k[3] = new Zylinder(2.0, 3.0);
		k[4] = new Kugel(2.0);
		k[5] = new Kugel(4.0);
		for (int i = 0; i < k.length; i++) {
			System.out.println(k[i].volumen() + " - " + k[i].getClass());
		}
		sort(k);
		System.out.println();
		for (int i = 0; i < k.length; i++) {
			System.out.println(k[i].volumen() + " - " + k[i].getClass());
		}
	}
 

rumpi

Mitglied
Also bei mir kommt immer noch keine Ausgabe, aber auch keine Fehlermeldung. Sieht jemand, was ich falsch mache?

Code:
package test;

import java.util.Arrays;


abstract class Körper implements Comparable<Körper> {
	
	public abstract double volumen();
	public abstract double oberflaeche();
	public int compareTo(Körper object){
		if(volumen()>object.volumen())
			return 1;
		if(volumen()<object.volumen())
			return -1;
		return 0;
	}
	public static void sort(Körper[] k){
		
		Arrays.sort(k);
	}
	public static void main (String[] args){
		Körper[] k = new Körper[6];
		k[0] = new Quader(3.0, 2.0, 1.0);
		k[1] = new Quader(1.0,2.0,2.0);
		k[2] = new Zylinder(3.0,2.0);
		k[3] = new Zylinder(2.0,3.0);
		k[4] = new Kugel(2.0);
		k[5] = new Kugel(4.0);
		for (int i = 0; i < k.length; i++) {
	         System.out.println(k[i].volumen() + " - " + k[i].getClass());
	      }
	      sort(k);
	      System.out.println();
	      for (int i = 0; i < k.length; i++) {
	         System.out.println(k[i].volumen() + " - " + k[i].getClass());
	      } 
	}
}

class Quader extends Körper{
	double laenge, breite, hoehe;
	public Quader(double laenge, double breite, double hoehe){
		this.laenge = laenge;
		this.breite = breite;
		this.hoehe = hoehe;
		if (laenge < 0 | hoehe < 0 | breite < 0)
			System.out.print("Es wurde ein negativer Wert eingegeben. Programm wird beendet!");
			System.exit(1);
	}
	public double volumen(){
		return laenge*breite*hoehe;
	}
	public double oberflaeche(){
		return 2*(breite*laenge+breite*hoehe+hoehe*laenge);		
	}
}
class Zylinder extends Körper{
	double radius, hoehe;
	public Zylinder(double radius, double hoehe){
		this.radius = radius;
		this.hoehe = hoehe;
		if (hoehe < 0 | radius < 0)
			if (radius < 0 | hoehe < 0)
				System.out.print("Es wurde ein negativer Wert eingegeben. Programm wird beendet!");
				System.exit(1);
	}
	public double volumen(){
		return Math.PI*radius*radius*hoehe;
	}
	public double oberflaeche(){
		return 2*Math.PI*radius*(radius+hoehe);
	}
	
}
class Kugel extends Körper{
	double radius;
	public Kugel(double radius){
		this.radius = radius;
		if(radius<0)
			System.out.print("Es wurde ein negativer Wert eingegeben. Programm wird beendet!");
		System.exit(1);
	}
	public double volumen(){
		return Math.PI*radius*radius*radius*4/3;
	}
	public double oberflaeche(){
		return 4*Math.PI*radius*radius;		
	}
	
}
 
S

SlaterB

Gast
wenn ein Programm nichts ausgibt,
dann testet man
System.out.println("Hello World");
und schreibt keine 90 Zeilen seltsamen Code,

entweder die eine Zeile funktioniert oder nicht, wie siehts aus?
 

rumpi

Mitglied
So, das kommt davon, wenn man keine Ahnung hat und trotzdem Ecplipse nutzt...
Habs auf der Konsole ausgeführt und da geht es. Eclipse hat mich vor dem Ausführen gefragt, welche class, oder so ähnlich und ich hab ** (Vorauswahl) drin gelassen und hab einfach OK geklickt... Anscheind war das falsch.

Edit: Allerdings kommt auch auf der Konsole bei deiner For Schleife keine Ausgabe.

Edit2: Hier mal ein Screenshot:

 
S

SlaterB

Gast
in deinem Code ist keine for-Schleife,

wenn das Hallo geht, kannst du aber gerne folgendes testen

for (int i = 0; i < 3; i++) {
System.out.println("i: "+i);
}

+ später
System.out.println("gleich kommt k: "+k.length);
for (int i = 0; i < k.length; i++) {
System.out.println(k.volumen() + " - " + k.getClass());
}
 

rumpi

Mitglied
Geht nix.
wenn ich
Code:
      k[0] = new Quader(3.0, 2.0, 1.0);
      k[1] = new Quader(1.0,2.0,2.0);
      k[2] = new Zylinder(3.0,2.0);
      k[3] = new Zylinder(2.0,3.0);
      k[4] = new Kugel(2.0);
      k[5] = new Kugel(4.0);
lösche, geht die Ausgabe wieder.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Brauche Denkanstoß: Weitergabe von Kontaktinfos aus verschiedenen Kontaktformularen von Webseiten Java Basics - Anfänger-Themen 2
K Arrays zusammen addieren - brauche Denkanstoß:) Java Basics - Anfänger-Themen 4
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
berserkerdq2 Brauche ich while != -1, wenn ich immer einen BufferedReader verwende? Java Basics - Anfänger-Themen 8
KyZarr Was brauche ich alles? Java Basics - Anfänger-Themen 2
B Brauche Hilfe zu einem Code Java Basics - Anfänger-Themen 5
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
H Brauche Hilfe Java Basics - Anfänger-Themen 2
H Brauche hilfe Java Basics - Anfänger-Themen 3
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
C Brauche Hilfe um ein Programm zu schreiben Java Basics - Anfänger-Themen 8
Leo0909 Ich brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 2
MichelNeedhelp Brauche zu diesem Labyrinth ein Skript? Der Hamster soll im Urzeigersinn das ganze Labyrinth abgehen und wieder an seinem Ursprungsplatz sein. Java Basics - Anfänger-Themen 40
H Brauche Hilfe in Java Eclipse Programmieraufgabe Neuling Java Basics - Anfänger-Themen 3
D Brauche Dringend Hilfe...Prozedur/Funktionsprozedur Ergebnis augeben Java Basics - Anfänger-Themen 11
I Brauche Hilfe bei Objektorientiertem programmieren Java Basics - Anfänger-Themen 23
M Brauche Hilfe bei If-Scheifen Java Basics - Anfänger-Themen 2
F ich brauche Hilfe bei Listen Java Basics - Anfänger-Themen 13
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
E Ich Brauche Hilfe Java Basics - Anfänger-Themen 3
L Brauche Hilfe beim arbeiten mit Konstruktoren Java Basics - Anfänger-Themen 20
J Brauche Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 1
S Brauche hilfe in Java [Fehler in mein Code]? Java Basics - Anfänger-Themen 2
B BITTE!! Ich brauche dringende Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 17
TpKey10 Ich brauche Hilfe Java Basics - Anfänger-Themen 14
F Ich brauche Hilfe bei Objektorientierter Programmierung... Java Basics - Anfänger-Themen 19
L Input/Output Wurzelzeichen in der Konsole ausgeben | Brauche Hilfe Java Basics - Anfänger-Themen 6
J Brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 3
T Brauche Hilfe um ein Programm zu verstehe Java Basics - Anfänger-Themen 4
C Ich brauche hilfe für meine Klausur Java Basics - Anfänger-Themen 13
C LMC laufen kriegen, welches Java brauche ich ? Java Basics - Anfänger-Themen 5
M Was brauche ich für Java + Fehler Java Basics - Anfänger-Themen 2
J Brauche Hilfe !! Java Basics - Anfänger-Themen 8
R Spielfeldbegrenzung einfügen (Java)? Brauche Hilfe! Java Basics - Anfänger-Themen 15
C Brauche dringend Hilfe. Umfrage mit ja und nein in Java erstellen? Java Basics - Anfänger-Themen 12
U Brauche Hilfe bei Programmierung einer Produktdatenbank App Java Basics - Anfänger-Themen 4
M Brauche Tipps für ein Spiel Java Basics - Anfänger-Themen 4
P Brauche Hilfe bei ResultSet mit MySQL Java Basics - Anfänger-Themen 6
T Datentypen Brauche Hilfe bei Arrays Java Basics - Anfänger-Themen 3
U Brauche Hilfe bei Bisektionsverfahren Java Basics - Anfänger-Themen 23
E Erste Schritte brauche hilfe zum verstehen einer Klasse(Tiefensuche) Java Basics - Anfänger-Themen 17
I Brauche Hilfe bei Schleifen Java Basics - Anfänger-Themen 18
J Brauche Starthilfe für editable Tableview Java Basics - Anfänger-Themen 0
B Java Graphen zeichnen - Brauche Hilfe Java Basics - Anfänger-Themen 9
S brauche hilfe bei Fehlersuche Java Basics - Anfänger-Themen 7
M JDK installieren Brauche dringend Hilfe Java Basics - Anfänger-Themen 2
L Brauche Hilfe bei Preisberechnungspogramm Java Basics - Anfänger-Themen 1
J Brauche Fußball-Ratschlag Java Basics - Anfänger-Themen 1
E Brauche eine Antwort zum Thema RegEx ( Alternative zur Lösung auch gesucht ) Java Basics - Anfänger-Themen 5
D Hilbert und Peano Kurve, ich brauche Hilfe Java Basics - Anfänger-Themen 4
S Brauche hilfe bei Pong (JFrame) Java Basics - Anfänger-Themen 2
V Hilfe-brauche eine Idee! Java Basics - Anfänger-Themen 5
Q Erste Schritte Brauche Hilfeeee!! Java Basics - Anfänger-Themen 2
R Brauche Hilfe beim fertigstellen eines Chat programms Java Basics - Anfänger-Themen 8
A Erste Schritte Brauche Hilfe Java Basics - Anfänger-Themen 2
D Brauche Hilfe für mein übungsprogramm Java Basics - Anfänger-Themen 16
S Klassen Brauche Hilfe bei Erstellung einer Klasse für einen Tachenrechner!!! Java Basics - Anfänger-Themen 6
W Brauche hilfe bei Hausübung Java Basics - Anfänger-Themen 10
D Brauche Hilfe bei Modulo (Übungsaufgabe) Java Basics - Anfänger-Themen 14
X Brauche Hilfe bei printOnScreen Methode !!! Java Basics - Anfänger-Themen 2
H mysql brauche hilfe, wer kann eine (längere) aufgabe für mich erledigen Java Basics - Anfänger-Themen 2
K Erste Schritte Brauche Hilfe bei Starten des Programms Java Basics - Anfänger-Themen 11
B Erste Schritte HILFE Brauche ein Beispiel für korrekte Syntax mit Semantikfehlern Java Basics - Anfänger-Themen 6
H Java von Kopf bis Fuß: Brauche Hilfe Java Basics - Anfänger-Themen 6
P Wozu brauche ich (this.)? Java Basics - Anfänger-Themen 3
B Erste Schritte Brauche Hilfe bei einem Java-Taschenrechner Java Basics - Anfänger-Themen 11
M suche/brauche Links über rein GUI Beispielprogramme Java Basics - Anfänger-Themen 4
S brauche hilfe beim fehler finden Java Basics - Anfänger-Themen 2
S Erste Schritte BlueJ-Aufgabe: Programmcode / Brauche dringend Hilfe !!! Java Basics - Anfänger-Themen 37
H Collections Brauche modifizierte HashMap Java Basics - Anfänger-Themen 6
A Brauche Hilfe bei Division von Feldzahl durch Ganzzahl Java Basics - Anfänger-Themen 3
F Java-Anfänger, brauche Hilfe Java Basics - Anfänger-Themen 3
F Java-Anfänger, brauche Hilfe Java Basics - Anfänger-Themen 2
K Wann genau brauche ich die Anweisung gleich null? Java Basics - Anfänger-Themen 10
C Brauche dringend hilfe beim exception im code Java Basics - Anfänger-Themen 5
G Brauche bitte Hilfe, bei umgekehrter Ausgabe!! Java Basics - Anfänger-Themen 6
B Erste Schritte Brauche Hilfe für ein UML Diagramm Java Basics - Anfänger-Themen 7
T Warum brauche ich diese IOException? Java Basics - Anfänger-Themen 30
S ICh brauche Hilfe,weil Java in der Schule Java Basics - Anfänger-Themen 11
B Brauche Hilfe mit Aufgaben mit dem JavaEditor Java Basics - Anfänger-Themen 8
M Brauche ich ein Datenbank oder nicht? Java Basics - Anfänger-Themen 6
B Erste Schritte Welche Kenntnisse brauche ich für diese Programmidee? Java Basics - Anfänger-Themen 4
I Primzahlenberechnung [Brauche Hilfe] Java Basics - Anfänger-Themen 5
T brauche den pfad Name! Java Basics - Anfänger-Themen 2
T brauche HILFE beim Junit test:eek: Java Basics - Anfänger-Themen 11
F Reader - brauche Hilfe Java Basics - Anfänger-Themen 19
R Klassen MemorySpiel: brauche Timer Java Basics - Anfänger-Themen 3
T Brauche Hilfe bei Variabeln Java Basics - Anfänger-Themen 4
J Brauche Hilfe mit replaceFirst Java Basics - Anfänger-Themen 10
M Brauche Hilfe bei Struktogramm Java Basics - Anfänger-Themen 9
T Datentypen brauche dringende hilfe!dezi in Asci umwandeln! Java Basics - Anfänger-Themen 4
X DB4O Collections and Arrays, brauche dringend Hilfe! Java Basics - Anfänger-Themen 3
B brauche hilfe bei funktion erstellen Java Basics - Anfänger-Themen 8
S Brauche Hilfe bei if/else Java Basics - Anfänger-Themen 3
N Brauche Hilfe mit Kollisionserkennung! Java Basics - Anfänger-Themen 16
J Brauche Hilfe bei Methode Java Basics - Anfänger-Themen 9
Y Brauche Hilfe beim Programm Java Basics - Anfänger-Themen 83

Ähnliche Java Themen

Neue Themen


Oben