Flächeninhalt

Status
Nicht offen für weitere Antworten.

Jonny

Neues Mitglied
hallo, ich stehe leider voll im wald und habe kein durchblick mehr. ich soll für die schule ein programm erstellen welches den flächeninhalt eines kreises,rechteck & dreieck ausgibt.

beim kreis soll die eingabe der radius oder zwei punkte sein
" rechteck sollen die beiden punkte der diagonalen der rechtecks eingegeben werden
" dreieck sollen die drei eckpunkte des 3ecks eingebenen werden

es wäre net wenn mir jemand helfen könnte.
tschuess Tim
 

MASTERII

Mitglied
evtl. hilft dir das weiter....


Code:
public class Kreis 
{
  
  //definieren von Attributen
  //double legt fest, das eine Zahl mit Kommazahlen folgt
    final double PI = Math.PI;  //Konstante 1 - final sagt, das die Zahl nicht mehr veränderbar ist.
    final double E  = Math.E;   //Konstante 2 - final sagt, das die Zahl nicht mehr veränderbar ist.
  
     
  //definition eines Konstruktors - konstruktormethoden werden zum initialisieren benutzt
    public Kreis()
    {
    
    }//Ende des Konstruktors
  
  
  
  
  
  //Funktionen
  //Kreisberrechnungen
    //1. Kreisdurchmesser
    static public double Kreisdurchmesser(double r)
    {
    double d = 0.0;
    d = r*2;
    return d;
    }//Ende Kreisdurchmesser
  
    //2. Kreisumfang
    static public double Kreisumfang(double r)
    {
    double u = 0.0;
    u = 2*Math.PI*r;
    return u;	
    }//Ende Kreisumfang  
 
    //3. Kreisflaeche
    static public double Kreisflaeche(double r)
    {
    double a;
    a = Math.PI*r*r;
    return a;	
    }//Ende Kreisflaeche 
  
}//Ende der Klasse Kreis


MFG
 

Jonny

Neues Mitglied
wäre ganz nett wenn ich noch weitere anregungen bzw bsp bekommen könnte bin leider noch kein java crack :oops:
 
G

Guest

Gast
Vielleicht hilft dir das weiter.
Müßtest dich jedoch in Vererbung ein wenig auskennen

Code:
// Abstrakte Klasse einer Figur. 
// Jede Figur besitzt eine Fläche. Also wird die Fläche auch hier definiert.
// d.h. die Klasse Figur hat ein Attribut vom Typ Fläche(double)
abstract class Figur
{
  protected double flaeche;
	
  public double getFlaeche()
  {
    return flaeche;
  }

  public void setFlaeche(double f)
  {
    flaeche = f;
  }
}

// Alle weiteren Klassen werden von Figur abgeleitet
// und besitzen einen Konstruktor um die Werte zu initialisieren
// und eine Methode berechenFlaeche() um die Fläche zu berechnen 
class Rechteck extends Figur
{
  private double breite;
  private double laenge;

  public Rechteck(double b, double l)
  {
    breite=b;
    laenge=l;
  }
	
  public void berechneFlaeche()
  {
    flaeche = breite * laenge;
  }
}

class Kreis extends Figur
{
  private double radius;
  private final double PI = 3.14159;
	
  public Kreis(double r)
  {
    radius = r;
  }
	
  public void berechneFlaeche()
  {
    flaeche = PI*radius*radius;
  }
}

class Dreieck extends Figur
{
  private double grundseite;
  private double hoehe;

  public Dreieck(double g, double h)
  {
    grundseite = g;
    hoehe = h;
  }
	
  public void berechneFlaeche()
  {
    flaeche = (grundseite*hoehe)/2;
  }
}

// Test Klasse um die Werte anzuzeigen
public class Test
{
  public static void main(String[] args)
  {
    Rechteck r = new Rechteck(5, 10);
    r.berechneFlaeche();
    System.out.println(r.getFlaeche());

    Kreis k = new Kreis(5);
    k.berechneFlaeche();
    System.out.println(k.getFlaeche());
		
    Dreieck d = new Dreieck(5, 6);
    d.berechneFlaeche();
    System.out.println(d.getFlaeche());
  }
}

Grüsse
Andres
 
G

Guest

Gast
Ich stehe vor einem ganz ähnlichen Problem.
Die mathematischen Berechnungen sind für mich nicht so das Problem, jedoch bin ich auf der Suche nach einer funktionierenden Integer-Eingabe über die Tastatur. Oder noch besser eines Punktes(x,y) den ich einfach mal als 2 Integerzahlen interpretiert habe...

Wäre super, wenn Ihr mir auch helfen könntet...

Danke & schöne Grüße
 

Nobody

Top Contributor
also sobald die zeile eingelesen wird oder beim start mitübergeben wird (ohne gui). erwartest du folgende eingabe für einen punkt:
[x,y]
du suchst zu beginn das '[' und liest von da ab alles bis zum ',' ein das ist die erste zahl danach vom ',' bis zum ']' und das ist die zweite zahl und daraus machst du dann einen double wert (so werden so ziemlich alle zahlen genutzt) als komma verwendest du '.'
um danach einen punkt zu erzeugen nutzt du die klasse point oder erstellst selbst einen entsprechenden datentyp.

willst du, dass das ',' auch als komma genutzt werden kann, musst du ein anderes trennzeichen zb ';' verwenden und dann beim auslesen dass ganze erst als string einlesen dann die ',' in '.' verwandeln und dann gehts regulär weiter.

wenn du probleme beim ausformulieren des ganzen hast, nur her damit.
 
G

Guest

Gast
Danke für die Antwort!!
Ich werde das morgen mal probieren. Heute komme ich nicht dazu.

Gibt es denn aber keine komfortable Möglichkeit, einfach einen Integer (oder double) einzulesen?
Ohne parsen, String auslesen, etc.
 

Nobody

Top Contributor
du könntest von den buchstaben den integer-wert nehmen, anders geht es nicht. wobei das auch nicht wirklich umständlich ist.

ausser du belegst zb die zahlentasten mit einem keylistener, ist aber noch umständlicher
 

valo

Mitglied
Also zum Beitrag vom Gast mit den Abstracten Klasse.
Ich glaube Bei dem Beispiel ist der Sinn einer abstracten klasse verloren gegangen.
Der Ansatz ist zwar richtig, aber man sollte auf die Templet und Hook methoden eingehen, ansonsten macht es keinen Sinn eine Abstracte klasse zu defenieren.
Der Source folg:

Code:
abstract public class GeoForm {
  
  public void out(){
    System.out.println("Die Fläche beträgt "+getFlaeche());
  }
  
  abstract public double getFlaeche();
}



public class Dreieck extends GeoForm{
  private double grundseite; 
  private double hoehe; 
  
  public double getFlaeche(){   
    return (grundseite*hoehe)/2; 
  }
}



public class Rechteck extends GeoForm{
  private double laenge;
  private double breite;
  
  public double getFlaeche(){
    return laenge*breite;
  }
}




public class Treiber {
  public static void main(String[] args) {
    GeoForm obj01=new Dreieck();
    obj01.getFlaeche();
    
    GeoForm obj02=new Rechteck();
    obj02.getFlaeche();
  }
}
[/code]
 

Jiriki

Mitglied
Anonymous hat gesagt.:
Gibt es denn aber keine komfortable Möglichkeit, einfach einen Integer (oder double) einzulesen?
Ohne parsen, String auslesen, etc.

wurde bei uns am anfang vereinfachend eingesetzt und spart jetzt immer noch viel arbeit. vor allem wenn man nur unter der konsole programmiert. die ist übrigens nicht von mir programmiert (also nur geklaut :wink: ):

anwendung:

String eingabeString = Keyboard.getString();
int eingabeInt = Keyboard.getInt();
double eingabeDouble = Keyboard.getDouble();
etc....

die klasse Keyboard:

Code:
import java.io.*;

public class Keyboard
{

	private static BufferedReader keyboard;

	public static char getChar()
	{
		do
		{
			try
			{
				String s = keyboard.readLine();
				if(s != null)
				{
					if(s.length() == 0)
						return '\n';
					if(s.length() == 1)
						return s.charAt(0);
				}
				System.out.println("Kein legaler char-Wert!");
			}
			catch(IOException _ex)
			{
				System.out.println("Input-Systemfehler!");
			}
			catch(StringIndexOutOfBoundsException _ex)
			{
				System.out.println("Kein legaler char-Wert!");
			}
			System.out.println("Erneute Eingabe:");
		} while(true);
	}

	public static String getString()
	{
		do
		{
			try
			{
				return keyboard.readLine();
			}
			catch(IOException _ex)
			{
				System.out.println("Input-Systemfehler!");
			}
			System.out.println("Erneute Eingabe:");
		} while(true);
	}

	public static byte getByte()
	{
		do
		{
			try
			{
				return Byte.parseByte(keyboard.readLine());
			}
			catch(IOException _ex)
			{
				System.out.println("Input-Systemfehler!");
			}
			catch(NumberFormatException _ex)
			{
				System.out.println("Kein legaler byte-Wert!");
			}
			System.out.println("Erneute Eingabe:");
		} while(true);
	}

	public static short getShort()
	{
		do
		{
			try
			{
				return Short.parseShort(keyboard.readLine());
			}
			catch(IOException _ex)
			{
				System.out.println("Input-Systemfehler!");
			}
			catch(NumberFormatException _ex)
			{
				System.out.println("Kein legaler short-Wert!");
			}
			System.out.println("Erneute Eingabe:");
		} while(true);
	}

	public static int getInt()
	{
		do
		{
			try
			{
				return Integer.parseInt(keyboard.readLine());
			}
			catch(IOException _ex)
			{
				System.out.println("Input-Systemfehler!");
			}
			catch(NumberFormatException _ex)
			{
				System.out.println("Kein legaler int-Wert!");
			}
			System.out.println("Erneute Eingabe:");
		} while(true);
	}

	public static long getLong()
	{
		do
		{
			try
			{
				return Long.parseLong(keyboard.readLine());
			}
			catch(IOException _ex)
			{
				System.out.println("Input-Systemfehler!");
			}
			catch(NumberFormatException _ex)
			{
				System.out.println("Kein legaler long-Wert!");
			}
			System.out.println("Erneute Eingabe:");
		} while(true);
	}

	public static float getFloat()
	{
		do
		{
			try
			{
				return Float.valueOf(keyboard.readLine()).floatValue();
			}
			catch(IOException _ex)
			{
				System.out.println("Input-Systemfehler!");
			}
			catch(NumberFormatException _ex)
			{
				System.out.println("Kein legaler float-Wert!");
			}
			System.out.println("Erneute Eingabe:");
		} while(true);
	}

	public static double getDouble()
	{
		do
		{
			try
			{
				return Double.valueOf(keyboard.readLine()).doubleValue();
			}
			catch(IOException _ex)
			{
				System.out.println("Input-Systemfehler!");
			}
			catch(NumberFormatException _ex)
			{
				System.out.println("Kein legaler double-Wert!");
			}
			System.out.println("Erneute Eingabe:");
		} while(true);
	}

	public Keyboard()
	{
	}

	static 
	{
		keyboard = new BufferedReader(new InputStreamReader(System.in));
	}
}
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben