Skip to forum
Benachrichtigungen
Alles löschen

Programmieraufgabe Java (10$) inside

69 Beiträge
19 Benutzer
0 Reactions
4,264 Ansichten
djinter
Joined: 05.08.2007

Original von philwen
du kannst einfach jeden bielibigen codeblock in deiner alten methode in einer eigenen methode kapseln

zB

main alt:
befehl1;
befehl2;
befehl3;

main neu:
neueMethode1;
befehl3;

neueMethode1(){
befehl1;
befehl2;
}

PS: bin mir abe rgar niht sicher ob das die struktur verändert, da ja die gleichen befehle ausgeführt werden...

ich glaube mit struktur ist schon die strukturierung/definition der methoden gedacht, so dass ein aufruf an anderer stelle nichts dran ändert.

@noldini: wie meinst du extra eingabemethoden? wenn du objekte in allen methoden brauchst, definiere doch globale variablen und speichere das zeugs darin. Dann hast du sie in allen methoden zugriffsbereit. machst du sie static, kannst du sogar von anderen klassen drauf zurückgreifen.


Antwort
Zitat
MisterJ
Joined: 26.03.2006

Original von djinter
@noldini: wie meinst du extra eingabemethoden? wenn du objekte in allen methoden brauchst, definiere doch globale variablen und speichere das zeugs darin. Dann hast du sie in allen methoden zugriffsbereit. machst du sie static, kannst du sogar von anderen klassen drauf zurückgreifen.

Ihhh.

Also, wenn du es elegant und OOP mäßig struktieren willst, kannst du auch eine Klasse Berechnung machen.
Die macht im Prinzip das, was in der while loop steht und merkt sich acuh das Ergebnis und kann es ausgeben. In der Loop machst du dann nur noch: berechnung.executeBerechnung. Die ArrayList in der main hat dann eine Liste von Berechnung. Die Einlese und ausgabe funktionen sind dementsprechend auch memberf funktionen der Klasse und nicht von Start.


Antwort
Zitat

das sind ja alles nette vorschläge aber wir/ich sind totale anfänger
noch nie was gehört von while loop :P
vielleicht jemand ne einfacherere idee zum umstruktorieren?


Antwort
Zitat
MisterJ
Joined: 26.03.2006

ähm, die while-loop ist da in dem Code, den du gepostet hast.
Wenn du davon nichts weißt würde ich von meinem Vorschlag auch abraten und dann erstmal den Code dort verstehen. Code umstrukturieren, den man nicht versteht geht meist schief. Es sollte dann auch einfacher sein, wenn man weiß, was man tut.


Antwort
Zitat

ja while-loop war missverständnis sry
Den Code bisher hab ich verstanden, wir sollen aber wirklich nur 2 Klassen machen, also noch eien weitere Klasse fällt damit flach. Sprich ich habe noch 2 Fragen:

1) Wie kann ich exceptions handeln? Also mit ttry catch, aber bei mir klappt es überhaupt nicht

2) Wie kann ich am besten die Struktir innerhalb noch verändern?


Antwort
Zitat
philwen
Joined: 13.05.2007

import java.util.ArrayList;
import java.util.Scanner;

public class Start {
static Scanner sc = new Scanner(System.in);
static ArrayList <String> berechneteErg =new ArrayList<String>();

public static void main (String []args){
String condition;
bool abort = false;

while(!abort){
berechnen();
System.out.print("erneute Berechnung? (j/n): ");
condition = sc.next();
if(condition.equalsIgnoreCase("n")){
abort = true;
}
}

System.out.println();
System.out.println("~~~~~~~~~~~~~~~~");
System.out.println("Berechnet wurden: ");
for (String out : ergebnisse) {
System.out.println(out);
}
System.out.println();
System.out.println("Auf Wiedersehen!");
}

private static void berechnen(){
RationaleZahl result = null;

System.out.print("Bitte geben Sie nun einen Bruch ein: ");
RationaleZahl rz1 = einleseBruch();
System.out.print("Bitte geben Sie nun den Operator an: ");
String op = einlesenOp();
System.out.print("Bitte geben Sie erneut einen Bruch ein: ");
RationaleZahl rz2 = einleseBruch();

switch (op){
case "+": result = rz1.addiere(rz2);break;
case "-": result = rz1.subtrahieren(rz2);break;
case "*": result = rz1.multiplizieren(rz2);break;
case "/": result = rz1.dividieren(rz2);break;
}
result.kuerzen();
System.out.println(rz1.ausgeben()+" "+op+" "+rz2.ausgeben()+" = "+result.ausgeben());
ergebnisse.add(rz1.ausgeben()+" "+op+" "+rz2.ausgeben()+" = "+rzE.ausgeben());
}

public static RationaleZahl einleseBruch(){
Scanner sc = new Scanner(System.in);
String eingabe=sc.nextLine();;
String[] bla = eingabe.split("/");
bla[0]=bla[0].trim();//selbe für bla 1
bla[1]=bla[1].trim();
return new RationaleZahl(Integer.valueOf(bla[0]),Integer.valueOf(bla[1]));

}

public static String einlesenOp(){
return sc.nextLine();
}
}


Antwort
Zitat

wow! vielen Dank! Wenn du mir jezt nochs agen kannst, wieso er beim 2. durchlauf, also beim 2. mal 2 rationale zahlen eingeben rumspinnt und

"Bitte geben Sie nun den Operator an: Bitte geben Sie erneut einen Bruch ein:

hintereinander in einer Zeile auftaucht, sodass ich keine Zahlen mehr eingeben kann ,
bist du der größte :)


Antwort
Zitat
toLgatus
Joined: 11.01.2010

Versuch mal wegen ersterem in der Methode berechnen System.out.println(...) statt .print


Antwort
Zitat
philwen
Joined: 13.05.2007

der tipp von tolgatus dürfte keinen unterschied machen - probiers mal indem du die zeile "Scanner sc = new Scanner(System.in);" in der einleseBruch methode löscht , die ist überflüssig

ansonsten kann ich dir nicht arg vielw ieterhelfen da ich hier grad keine java-ide installiert hab...


Antwort
Zitat