string in charArray umwandeln

Status
Nicht offen für weitere Antworten.

norroy

Aktives Mitglied
Schönen guten Abend zusammen

Ich hätte ein kleines Problem. Ich code momentan ein Programm, welches die Grundoperationen (+ - * /) der komplexen Zahlen ausführt. Ich habe mir überlegt das ich nun den Benutzer auffordern könnte die gewünschte Operation
(zB. (a+bi)+(c+di) ) einzugeben, diesen string einzulesen, dann in ein charArray umzuwandeln und die benötigten Zahlen (a, b, c, d) daraus auszulesen um damit weiterrechnen zu können.
Genau mit diesem Teil des Programms habe ich auch meine liebe Mühe, ich kann zwar den string einlesen, jedoch ist es mir ein Rätsel wie ich ihn in ein Array umwandeln soll und daraus auszulesen.
Bei mir sieht das momentan so aus:

Code:
	void einlesen(){
		InputStreamReader eingabestrom = new InputStreamReader (System.in); 
    	BufferedReader eingabepuffer = new BufferedReader (eingabestrom); 
    	
    	String zahlen = "";
    	try {
			zahlen = eingabepuffer.readLine();
			} catch (IOException e){
				e.printStackTrace();
			}
		String[] zahlentabelle =new String[12];
		
    	zahlentabelle.toCharArray(zahlen);
    	int a = Integer.parseInt(zahlen.substring(1));
    	int b = Integer.parseInt(zahlen.substring(3));
    	int c = Integer.parseInt(zahlen.substring(8));
    	int d = Integer.parseInt(zahlen.substring(10));
    	String operation = Integer.toString(zahlen.substring(6));
    	
    	if(operation.equals("+"))
    		addition();
    	if(operation.equals("-"))
    		subtraktion();
    	if(operation.equals("*"))
    		multiplikation();
    	if(operation.equals("/"))
    		division();

Ich habe jedoch den Verdacht das die Zahlen a, b, c und d und auch die Operation welche in
String operation = Integer.toString(zahlen.substring(6));
ausgelesen werden sollte absolut nicht richtig definiert sind. Kann mir jemand helfen?
Danke

p.s. wem komplexe Zahlen nichts sagen: wikipedia hilft :bae:
 
also mit dem Char-array das is denkbar leicht 😀
Code:
	charArray = <String>.toCharArray()

wenn du den Nutzer die Möglichkeit gibts derart kompelxe Ausdrücke einzugeben um am Ende diese zu berechnen, solltest dir absolut sicher sein, was dort eingegeben werden kann um es irgendwie zu filtern/parsen/scannen etc.

wenn der Nutzer statt einstelligen zweistellige Zahlen nutzt, so verschieben sich einige Indizes im String, bzw dann im charArray
 
für einstellige SubStrings geht auch zahlen.substring(3,4) oder so,
ausprobieren! (nicht gleich mit Integer.parseInt parsen sondern den String ausgeben)


wenn die Zahlen beliebig lang sein können, vielleicht noch beliebig per + - usw kombiniert, dann hast du eine sehr komplexe Aufgabenstellung,

schau hier mal rein
http://www.java-forum.org/de/viewtopic.php?t=13378
und nicht an der Komplexität verzweifeln,

für den Anfang könnte evtl. nur die Methode
> private List<Object> tokenize( String formula ){
in der Klasse Parser für dich interessant sein, ab Zeile 385,

oder auch die allgemeinen Beschreibungen am Anfang
 
damn, du hast recht... aber wie kann ich dies umgehen? Wie kann ich festlegen bis wohin denn die Zahl nun geht und wo die nächste beginnt?
Und zu deiner Hilfe: danke! Jedoch ist mir eben aufgefallen das mir ein char-array nicht wahnsinnig viel bringt wenn die Zahlen zweistellig werden da der Datentyp char nur ein unicode-zeichen aufnehmen kann. (glaube ich mich zu erinnern).
Und so ändert sich meine Fragestellung in: wie kann ich aus einem String-array den ganzen Ausdruck auslesen?
 
Mal ganz ehrlich: Das ist mächtiger Aufwand. Wäre es nicht eventuell besser, so etwas wie einen Taschenrechner zu schreiben, der *zwei* Eingabefelder (real, imaginär) hat? Damit sparst du dir das ganze String-geparse, und rechnen kann man damit genauso gut...
 
böö, das wäre ja einfach 😀 ne Scherz, ich möchte es ganz gern in der*schönen* Version versuchen. Wenn ich daran wirklich scheitern sollte komme ich auf deinen Tipp zurück, versprochen 😀
 
Übersehen nicht, nicht ganz schlau drauss geworden würde es eher treffen. Ich programmiere eben nicht so häufig, wir haben das mal ein halbes Jahr in der Schule behandelt und jetzt ein Jahr später wird das ganze für dieses Programm wieder ausgegraben.
Würde es dir also etwas ausmachen das ganze genauer zu erklären?
herzlichsten Dank
 
Also ich hätte mir mal eine Methode überlegt um die mehrstelligen Zahlen aus dem string-array auszulesen, jedoch habe ich *etwas* Mühe sie in Code-Form umzusetzen und ob sie funktioniert weiss ich auch nicht.
Jedenfalls würde es etwa so funktionieren, dass Feld für Feld des Arrays durchgegange wird auf der Suche nach einzelnen aufeinanderfolgenden Ziffern und diese schliesslich zusammengesetzt würden.
Aber wie gesagt, ich kann die Idee nicht in Code übersetzen. Gibt es dafür überhaupt entsprechende Methoden? Oder kommen sich die verschiedenen Datentypen ins Gehege?
Besten Dank für eure Meinungen und Tipps.
 
> Jedenfalls würde es etwa so funktionieren, dass Feld für Feld des Arrays durchgegange wird auf der Suche nach einzelnen aufeinanderfolgenden Ziffern und diese schliesslich zusammengesetzt würden.

genau darum geht auch in der Methode, auf die ich hingewiesen habe,
speziell das Zahlen-suchen und auslesen z.B. in Zeile 414 bis 433,

ich kann mir allerdings sehr gut vorstellen, dass das zu schwer zum verstehen ist,
alles erklären ist aber auch keine effiziente Methode, für mich zumindest nicht 😉
dann doch lieber viel ausprobieren
 
versteh nicht, dass viele anfäger immer taschenrechner programmieren wollen,... sowas is nicht gerade einfach....
 
wir ham das auch im 1. semester machen müssen ... über bäume etc. .. aber gut wurden uns ja die theoretischen grundlagen gegeben 😀
 
Ich will keinen Taschenrechner programmieren, ich muss!! einen Taschenrechner programmieren.
Und ja, einfach ist es wirklich nicht gerade... grml...
 
hat man euch da keine hinweise gegeben? was ihr nutzen könnt, datenstrukturen und sowas? muss der ausdruck beliebig komplex sein (klammerung) oder is die anzahl der operanden beschränkt? irgendwas was dir die arbeit erleichtern könnte? :roll:
 
nunja, der Auftrag lautete "programmiert ein Programm welches die Grundoperationen der komplexen Zahlen ausführen kann!" komplexe Zahlen haben normalerweise die Form (a+bi)+(c+di), wobei a, b, c und d beliebig grosse und komplexe Zahlen sein können, irrationale Zahlen werden jedoch nicht verwendet (zumindest in meinem Programm) und die Grundoperationen werden zwischen den zwei Klammern eingesetzt.
Mein Problem ist jedoch weiterhin dass ich aus dem eingelesenen String ein String-array gemacht habe und aus diesem sollte ich die Zahlen auslesen können.
Kann mir jemand helfen?
 
in dieser Aufgabenstellung steht aber nicht unbedingt, dass du nicht mehrere Eingabefelder und vielleicht ne ComboBox für die Rechenoperation verwenden darfst,
dann entfällt jedes Parsen

> böö, das wäre ja einfach ne Scherz, ich möchte es ganz gern in der*schönen* Version versuchen.

kannst du gerne machen, aber dann solltest du das auch wirklich selber machen und nicht deine Extra-Wünsche durch andere programmieren lassen..

also, danach zu fragen ist immer noch legitim, aber bitte im Ton 'ich möchte gerne Extras' und nicht 'ich muss!'
 
Hallo,

ja das ist leider scheinbar eine beliebte Aufgabenstellung bei den Profs...
Die Theorie ist ja einfach, aber das dann in die Praxis umzusetzten ist gerade für Neulinge sehr schwer (ich sprech da aus eigener Erfahrung).

Nun ich würde versuchen die Zahlen einzeln einzulesen (JOptionPane würde sich da anbieten) und dann die Operation auswählen lassen.

Ich denke so kommst Du am schnellsten und einfachsten zum Ziel.

Ich werde heute abend mal schauen, wenn ich mich nicht allzusehr täusche, habe ich das auch mal machen müssen und ich denke den Code sollte ich noch haben, ich würde ihn dann hier reinstellen.

Grüße Oli
 
JOptionPane ist in der Benutzung mühsam,
ich kenne kaum ein sinnvolles Programm, bei dem ständig Unterfenster aufgehen,

man stelle sich vor, dass würde hier im Forum für jedes Posting passieren..,

TextFelder oder TextAreas wie beim QuickReply hier,
für den Taschenrechner mehrere, die man alle beliebig wieder bearbeiten kann,
und am Ende ein Button 'Berechnen' oder so
 
Hier geht´s ja um eine Übung. Da brauchts denk ich kein hochentwickeltes GUI. Was hier wichtig ist ist die Umsetzung der arithmetischen Funktionen auf kopmplexe Zahlen. Und da würde ich mit JOptionPane arbeiten.

Warum das mühsam sein soll kann ich auch nicht wirklich nachvollziehen. Es is meiner Meinung nach schnell und einfach und in diesem Fall zielführend.

Grüße Oli
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben