Zum Inhalt springen

Hilfe bei Eclipse Programmierung


Empfohlene Beiträge

Geschrieben (bearbeitet)

Hi leute,

hier ich hab da mal ein Problem. Bin jetzt im 2. Semester seid 1 Woche :rolleyes: und habe bis jetzt nur mit BlueJ gearbeitet.

Haben jetzt mit Eclipse angefangen.

Nur ich kappier das irgendwie nicht.

Das ding zeigt mir dauernt fehler an.

Die aufgabe lautet:

Implementieren Sie eine Klasse Rechner, welche alle vier Grundrechenarten beherrscht.

Testen Sie Ihre Implementierung mittels der Methode main().

Hab mich mal dran gemacht und hab schon so viel ausprobiert. hab aber wirklich keine ahnung, wie ich das anstellen soll.

Wie issn der vergleich mit BlueJ. Der Prof hat uns nämlich nur ne anleitung in die hand gedrückt von eclipse und gesagt : macht mal.

Ist der ansatz so in ordnung. oder total falsch?

kann mir da vllh jmnd helfen. wenigstens kleine tipps geben, in eclipse gut reinzukommen und wie ich das mit dem rechner am besten hin bekommen könnte?

danke im vorraus.

package testest;

public class testest

{

public static void main(String[] args)

{

int i;

i = 3 + 4;

System.out.println(i);

}

}

Bearbeitet von musti
Geschrieben (bearbeitet)

Hallo,

das was du gemacht hast, ist eine Klasse, die schlicht nur 3+4 rechnet. Lt. Aufgabe sollst du aber einen allg. Rechner entwerfen, dh. eine Klasse die Methoden für die 4 Grundrechenarten anbietet. Aus der Main-Methode sollst du dann diese Rechenmethode entsprechend anhand einer Instanz verwenden.

Bitte benutze hier auch die Code-Tags, formatieren deinen Code.

Gruß Martin

Bearbeitet von MartinSt
Geschrieben

also du meinst, ich soll sowas wie nen taschenrechner laut aufgabe programmieren.

hmmmm tolle bescherung :upps

eine frage: kann man bei eclipse genauso parameter anlegen, wo man dann von ausen zahlen vergeben kann?

Geschrieben (bearbeitet)
Bin jetzt im 2. Semester seid 1 Woche und habe bis jetzt nur mit BlueJ gearbeitet.

Haben jetzt mit Eclipse angefangen.

Herzlichen Glückwunsch :]

Das ding zeigt mir dauernt fehler an.

Daß Eclipse Dir dauernd Fehler Anzeigt, hat bestimmt seinen Grund; meistens ist da auch etwas im Argen. Im Grunde solltest Du a) eine Fehlermeldung erhalten (die Du hier natürlich auch gerne posten darfst) B) auch entsprechende Vermerke in Deinem Dokument sehen, wo welcher Fehler registriert worden ist.

Implementieren Sie eine Klasse Rechner, welche alle vier Grundrechenarten beherrscht.

Testen Sie Ihre Implementierung mittels der Methode main().

Ja, denn mal los :]

Hab mich mal dran gemacht und hab schon so viel ausprobiert. hab aber wirklich keine ahnung, wie ich das anstellen soll.

Das hier könnte hilfreich sein: Galileo Computing :: Java ist auch eine Insel (8. Auflage)

Und wenn man nicht ganz faul ist, findet man das

Wie issn der vergleich mit BlueJ. Der Prof hat uns nämlich nur ne anleitung in die hand gedrückt von eclipse und gesagt : macht mal.

Keine Ahnung. Aber Eclipse ist toll :]

Ist der ansatz so in ordnung. oder total falsch?

Äh, Letzteres?

Aber Du hast ja noch ein paar Semester ;)

Bearbeitet von lilith2k3
Geschrieben

danke für die kleinen tipps, bin grad dabei das alles mal so zu bearbeiten.

galileo computing kenn ich schon. aber wenn man sowas einfaches wie bluej gemacht hat, fällt einem das verstehen bissl schwer.

sobald ich fertig bin, schreib ich wieder :) dankeee

Geschrieben

ich hab da jetzt was, aber irgendwie komm ich da net weiter.

wie mach ich das, das ich die zahlen bzw. die operation eingeben kann???

bei bluej ist das so. das ich methoden habe wo ich parameter vergeben kann und bei der Objekt erzeugung die zahlen die ich zusammen rechnen will, eingeben kann. das war halt so toll an bluej, das ich alles was passiert sehen konnte. irgendsiw check ich das mit eclipse net. ist halt blöd wenn man erst mit so nem anfänger programm anfängt und dann ohne irgendeine richtige einführung in eclipse programmieren soll.

package rechner;

import java.io.*;

public class Rechner

{

public static void main ( String[] args )

{

double zahl1;

double zahl2;

double ergebnis;

String operation;

System.out.println("Geben Sie die erste Zahl ein:");

????

System.out.println("Geben Sie die Rechenoperation ein:");

?????

System.out.println("Geben Sie die zweite Zahl ein:");

???????

if (operation.equals("+"))

{

ergebnis = zahl1 + zahl2;

}

else if (operation.equals("-"))

{

ergebnis = zahl1 - zahl2;

}

else if (operation.equals("*"))

{

ergebnis = zahl1 * zahl2;

}

else if (operation.equals(":"))

{

ergebnis = zahl1 / zahl2;

}

else

{

System.err.println("Fehlerhafte Eingabe");

return;

}

System.out.println( "Ihr Ergebnis lautet: " + ergebnis );

}

}

Geschrieben
ich hab da jetzt was, aber irgendwie komm ich da net weiter.

Verwende bitte die Code-Tags !!

wie mach ich das, das ich die zahlen bzw. die operation eingeben kann???

Java ist auch eine Insel – 12.3 Stream-Klassen und Reader/Writer

bei bluej ist das so. das ich methoden habe wo ich parameter vergeben kann und bei der Objekt erzeugung die zahlen die ich zusammen rechnen will, eingeben kann. das war halt so toll an bluej, das ich alles was passiert sehen konnte. irgendsiw check ich das mit eclipse net. ist halt blöd wenn man erst mit so nem anfänger programm anfängt und dann ohne irgendeine richtige einführung in eclipse programmieren soll.

Schau Dir das Kapitel über die Methoden und deren Definitionen an.

Geschrieben

ist es vllh sowas, was mit dem bufferdreader gemeint ist.

ich hab mir mal das kapitel durchgelesen. hab auch etwas verstanden was gemeint ist. aber kann mir das vllh jemand präziser erklären?

wie was genau funktionier?


	    BufferedReader x = new BufferedReader

	    (new InputStreamReader( System.in ));



	    System.out.println("Geben Sie die erste Zahl ein:");

	    zeile = x.readLine();

	    i = Double.parseDouble(zeile);



	    System.out.println("Geben Sie die Rechenoperation ein:");

	    j = x.readLine();


	    System.out.println("Geben Sie die zweite Zahl ein:");

	    zeile = x.readLine();

	    k = Double.parseDouble(zeile);

Geschrieben

Einfach ausgedrückt, erzeugst du in der ersten Zeile ein Objekt, welches dafür zuständig ist, um Eingaben von der Konsole (System.in) entgegen zu nehmen.

Das System.out.println() sollte selbsterklärend sein. In den beiden nachfolgenden Zeilen


zeile = x.readLine();

i = Double.parseDouble(zeile);

wird die Methode readLine() von dem Objekt 'x' aufgerufen. Beim Ausführen des Programms wird bei Abarbeitung der Zeile eine Eingabe von dir erwartet. Der Wert deiner Eingabe (z.B. 15) wird dann in die Variable "zeile" in Forms eines "Strings" geschrieben. In der nachfolgenden Zeile wird der Wert von "zeile", also die 15, in ein Double-Wert (vgl. Java-Datentypen) umgewandelt und in 'i' geschrieben.

Bei den nachfolgenden Zeilen wiederholt sich das dann entsprechend.

Geschrieben
package deinpaket;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

public class Rechner {

int result = 0;

public int plus(int zahl1, int zahl2) {

result = zahl1 + zahl2;

return result;

}

public int minus(int zahl1, int zahl2) {

result = zahl1 - zahl2;

return result;

}

public int multiplizieren(int zahl1, int zahl2) {

result = zahl1 * zahl2;

return result;

}

public int teilen(int zahl1, int zahl2) {

result = zahl1 / zahl2;

return result;

}

public static void main(String[] args) throws NumberFormatException,

IOException {

int zahl1 = 0;

int zahl2 = 0;

String operation = "";

// Instanz eines neuen Rechners mit Namen Taschenrechner erstellen

Rechner Taschenrechner = new Rechner();

// Instanz des BufferedReader erstellen (einlesen der console)

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

while (operation != "0") {

System.out.println("Geben sie bitte die Operation ein (+,-,*,/,0)");

// Einlesen der Operation - 0 bedeudet Beenden

operation = in.readLine();

// Wenn operation = 0 dann spring aus while

if(operation.equals("0")){

System.out.println("Beendet");

break;

}

System.out.println("Geben sie bitte die erste Zahl ein");

// Einlesen erste Zahl

zahl1 = Integer.parseInt(in.readLine());

System.out.println("Geben sie bitte die zweite Zahl ein");

// Einlesen zweite Zahl

zahl2 = Integer.parseInt(in.readLine());

System.out.println(zahl1 + " " + operation + " " + zahl2);

System.out.println("Ergebnis:");

// entsprechende Methode ausführen

if (operation.equals("+")) {

System.out.println(Taschenrechner.plus(zahl1, zahl2));

} else if (operation.equals("-")) {

System.out.println(Taschenrechner.minus(zahl1, zahl2));

}

if (operation.equals("*")) {

System.out.println(Taschenrechner.multiplizieren(zahl1, zahl2));

}

if (operation.equals("/")) {

System.out.println(Taschenrechner.teilen(zahl1, zahl2));

}

}

}

}

hau es in eclipse und formatier mit strg+shift+f dann ist es etwas einfacher zu lesen

Geschrieben

danke erstaml für den quelltext

aber ich hab da mal selbst was gemacht, was auch funktioniert.

package rechner;

import java.io.*;


public class Rechner 

{

	public static void main ( String[] args ) throws IOException

	{

		double zahl1;

	    double zahl2;

	    double ergebnis;


	    String operation;

	    String zeile;


	    BufferedReader x = new BufferedReader

	    (new InputStreamReader( System.in ));



	    System.out.println("Geben Sie die erste Zahl ein:");

	    zeile = x.readLine();

	    zahl1 = Double.parseDouble(zeile.trim());



	    System.out.println("Geben Sie die Rechenoperation ein:");

	    operation = x.readLine();


	    System.out.println("Geben Sie die zweite Zahl ein:");

	    zeile = x.readLine();

	    zahl2 = Double.parseDouble(zeile.trim());


	    if (operation.equals("+"))

	    {    	

	    	ergebnis = zahl1 + zahl2;

	    }       

	    else if (operation.equals("-"))

	    {    	

	    	ergebnis = zahl1 - zahl2;

	    }

	    else if (operation.equals("*"))

	    {    	

	    	ergebnis = zahl1 * zahl2;

	    }

	    else if (operation.equals(":"))

	    {    	

	    	ergebnis = zahl1 / zahl2;

	    }    

	    else

	    {    	

	    	System.err.println("Fehlerhafte Eingabe");

	    	return;

	    	}

	    System.out.println( "Ihr Ergebnis lautet: " + ergebnis );

	}


}

ist es eurer meinung nach so akzeptabel?

Geschrieben

wenn ich die aufgabe richtig verstanden habe, geht es auch darum einige prinzipion der oop zu verstehen, und wenn du alles in der main methode hast ist das schlicht prozedural

Geschrieben

also das ist dann wohl richtig. funktioniert ja auch einwandfrei.

danke euch allen bei der hilfe.

package rechner;


import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;


public class Rechner{

	double ergebnis = 0;


	public double plus(double zahl1, double zahl2) {

		ergebnis = zahl1 + zahl2;

		return ergebnis;

	}


	public double minus(double zahl1, double zahl2) {

		ergebnis = zahl1 - zahl2;

		return ergebnis;

	}


	public double multiplizieren(double zahl1, double zahl2) {

		ergebnis = zahl1 * zahl2;

		return ergebnis;

	}


	public double teilen(double zahl1, double zahl2) {

		ergebnis = zahl1 / zahl2;

		return ergebnis;

	}


	public static void main(String[] args) throws NumberFormatException, IOException 

	{

		double zahl1 = 0;

		double zahl2 = 0;

		String operation = "";


		// Instanz eines neuen Rechners mit Namen Taschenrechner erstellen

		Rechner Calculate = new Rechner();


		// Instanz des BufferedReader erstellen (einlesen der console)

		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));


		while (operation != "0") 

		{

			System.out.println("Geben sie bitte die Operation ein (+,-,*,/,0)");


			// Einlesen der Operation - 0 bedeudet Beenden

			operation = in.readLine();


			// Wenn operation = 0 dann spring aus while

			if (operation.equals("0")) {

				System.out.println("Beendet");

				break;

			}


			System.out.println("Geben sie bitte die erste Zahl ein");

			// Einlesen erste Zahl

			zahl1 = Double.parseDouble(in.readLine());


			System.out.println("Geben sie bitte die zweite Zahl ein");

			// Einlesen zweite Zahl

			zahl2 = Double.parseDouble(in.readLine());


			System.out.println("Rechnung:");

			System.out.println(zahl1 + " " + operation + " " + zahl2);

			System.out.println("Ergebnis:");


			// entsprechende Methode ausführen

			if (operation.equals("+")) 

			{

				System.out.println(Calculate.plus(zahl1, zahl2));

			} 

			else if (operation.equals("-")) 

			{

				System.out.println(Calculate.minus(zahl1, zahl2));

			}

			if (operation.equals("*")) 

			{

			     System.out.println(Calculate.multiplizieren(zahl1, zahl2));

			}

			if (operation.equals("/")) 

			{

				System.out.println(Calculate.teilen(zahl1, zahl2));

			}

		}

	}

}

Geschrieben

Und damit bist Du zufieden? Was passiert, wenn man kein Operationszeichen eingibt und Enter drückt? Oder einen Buchstaben anstelle eines der vorgegebenen Zeichen? Ich krieg kein Ergebnis und weiß nicht warum.

(Natürlich weiß ich warum, aber denk mal einen Schritt weiter, wenn Du Applikationen baust, bei denen für den Benutzer nicht offensichtlich ist, was sie genau tun).

Als nächstes solltest Du auch die auftretenden Exceptions abfangen und behandeln. Man könnte den Benutzer vernünftig darauf hinweisen, dass z. B. seine Eingabe falsch war, oder dass eine Division durch 0 nicht möglich ist. Außerdem läuft das Programm dann noch weiter und stürzt nicht unerwartet ab.

Geschrieben

so hoffe das ist schon besser...


package rechner;


import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;


public class Rechner {

	double ergebnis = 0;


	public double plus(double zahl1, double zahl2) {

		ergebnis = zahl1 + zahl2;

		return ergebnis;

	}


	public double minus(double zahl1, double zahl2) {

		ergebnis = zahl1 - zahl2;

		return ergebnis;

	}


	public double multiplizieren(double zahl1, double zahl2) {

		ergebnis = zahl1 * zahl2;

		return ergebnis;

	}


	public double teilen(double zahl1, double zahl2) {

		ergebnis = zahl1 / zahl2;

		return ergebnis;

	}


	public static void main(String[] args) throws NumberFormatException,IOException {

		double zahl1 = 0;

		double zahl2 = 0;

		String operation = "";


		Rechner Calculate = new Rechner();

		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));



		while (operation != "0") {

			try {

				System.out.println("Zum BEENDEN = # eingeben!");

				System.out.println("Geben sie bitte die Operation ein (+,-,*,/,#)");

				operation = in.readLine();

			} catch (NumberFormatException e) {

				System.err.println("FEHLER: Bitte geben Sie +,-,*, / ein!");

			}


			if (operation.equals("#")) {

				System.out.println("Beendet");

				break;

			}



			try {

				System.out.println("Geben sie bitte die erste Zahl ein");

				zahl1 = Double.parseDouble(in.readLine());

			} catch (NumberFormatException e) {

				System.err.println("FEHLER:Bitte geben Sie eine Zahl ein:");

			}


			try {

				System.out.println("Geben sie bitte die zweite Zahl ein");

				zahl2 = Double.parseDouble(in.readLine());

			} catch (NumberFormatException e) {

				System.err.println("FEHLER:Bitte geben Sie eine Zahl ein:");

			}


			System.out.println("Rechnung:");

			System.out.println(zahl1 + " " + operation + " " + zahl2);

			System.out.println("Ergebnis:");


			// entsprechende Methode ausführen

			if (operation.equals("+")) {

				System.out.println(Calculate.plus(zahl1, zahl2));

			} else if (operation.equals("-")) {

				System.out.println(Calculate.minus(zahl1, zahl2));

			}

			if (operation.equals("*")) {

				System.out.println(Calculate.multiplizieren(zahl1, zahl2));

			}

			if (operation.equals("/")) {

				System.out.println(Calculate.teilen(zahl1, zahl2));

			}

		}

	}

}

toll wie ich grad merke... wenn ich buchstaben eintippe statt zahlen, werden die buchstaben als 0 genommen und gerechnet. ist das normal?

Geschrieben (bearbeitet)

Kleiner Tipp: Er erkennt Buchstaben und die Exception wird korrekt abgefangen.

Da du die Zahlen oben mit 0 initialisiert hast wird mit diesen Werten gerechnet.

Viel Erfolg

Bearbeitet von Bjarki

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...