Java String Auswerten

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du hast also Button mit denen du eine Textbox beschreibst um dann später den String wieder aus der Textbox zu lesen? Warum nicht einfach die Textbox nur als visuelles Ausgabemedium nutzen und 3 integer. In einem schreibst du die gerade eingegebene Zahl, nen ihn buffer oder so. Wenn dann +/- gedrückt wird kopierst du in int 2 den wert von buff und setzt buff wieder zurück wir = gedrückt wird der wert von buffer in int3 kopiert. Dann noch eine variable in der du speicherst ob + oder - gedrückt wurde und du musst nicht im nachhinein den String parsen. Obwohl das eig auch einfach ist. Prüfe einfach ob nen + oder nen - enthalten ist, splitte je nachdem den string, wandle mit Integer.parseInt die substrings um und addiere oder subtrahiere.

letzteres kommt meiner überlegung nahe, jedoch fehlt mir mMn die möglichkeit den string zu teilen in einzenlne substrings...

0
@BigMaik94

Dan schnapp dir bitte mal nen Java-Buch:

String test = "a+b"; test.split("+")[0]; //=>"a"

0

Obwohl ich ja die ersteere Lösung noch etwas besser finde, hier mal als pseudocode

Offtopic: Dieser RichtTextEditor hier ist echt mäßig: liebe GF-Entwickler baut den bitte etwas um. Wo ist hier eig überhaupt Platz für Vorschläge, Rückmeldung und co? Pastebin: http://pastebin.com/6AyL2bhA

0
@thedafelix

danke, ich shcaue mir beide gleich etwas näher an,

kannst du denn ein gutes buch empfehlen?? ich hatte bis jetzt nur mäßige in der hand^^

0
@thedafelix

hab mir den link angeschaut, danke schonmal, allerdings bringt er mir an dieser stelle leider nciht wirklich etwas, da wir die aufgabe bekommen haben, es über textfelder und string auslesen bekommen haben^^ ich bin schon froh soweit gekommen zu sein...

hast du noch eine andere idee??

ich habe jetzt bsp das eingegeben:

teingabe:123+123 string eingabe=teingabe.getText();

so und nun fehlt mir der teil zum sauberen zerlegen des strings und weiternutzen :/ oder ich habe ewas übersehen^^

0
@BigMaik94

Ein Buch, dass sowohl hier im Forum als auch von mit persönlich sehr empfohlen wird ist "Java ist auch eine Insel" vom Galileo Computing Verlag.

Das schöne ist, dass es des ganze auch kostenlos als HTML zum runterladen oder onlinelesen gibt:

http://openbook.galileocomputing.de/javainsel/

Mit E-Bookreader ist das ganze dann natürlich perfekt. Falls ja, ich hab mir letzens nen Script geschrieben was die Navigationsbalken wegmacht^^

Sonst is PC ja auch ned schlimm, kannst dann live mitprogrammieren

0
@BigMaik94

Nochmal Empfehlung zum Buch lesen, hab oben schon was geschrieben^^

Will dir hier jetzt keine Hausaufgaben machen des Program musst du also schon selbst schreiben

Also du schaust erstmal ob der Benutzer +oder - verwendet hat:

eingabe.contains("+")

Dann den String splitten:

eingabe.split("+")[0] bzw [1]

Mit arrays solltest du vertraut sein.

Für minus isses ja des selbe. (if-else) Und noch also kleinen generellen Hinweis(Meine Mitschüler lernen des auch nie^^): Google: java string was willst du machen(bsp zerlegen) oder auch die offiziellen java docs(hier zum string):

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html

0
@thedafelix

ich bin shcon kräftig am googlen, und nein hausaufgaben sollst du nciht machen...

bei uns ist das so, wir sind drei die sich schon besser in java auskennen... die andern bekommen primitive aufgaben und wir schwierigere^^

die haben zB die aufgabe:

zwei texfelder wo zwei zahlen eingegeben werden könne... der rest ist dann im quellcode schon festzulegen... wir sollen das dann aber nach mölichkeit als simplen tr hinbekommen^^

dürfen dafür aber auch das inet zur hilfe nutzenn^^

0
@thedafelix

Für 2 Operatoren gehts ja noch, aber für alle 4 wird der Code schon sehr hässlich mit der Lösung ;)

0
@thedafelix

ich habe grad ne idee, die is zwar nich die kürzeste aber darum gehts erstmal nicht... ich prob sie aus wenn sie funzt, dann schrieb ich euch die lsg mal die ich habe :D

0
@BigMaik94

mein code schnippsel an entsprechender stelle (im acionlistener vom "=" button):

String feld = teingabe.getText();

if (feld.contains("+")) {

  String[] splittArray = feld.split("+");
  String erg1 = splittArray[0] + splittArray[1];
  int erg2 = Integer.parseInt(erg1);
  teingabe.setText(""+erg2);

}

__

scheiß editor hier :D

0
@BigMaik94

asso sollte dazu sagen das es natürlich nciht funktioniert^^

0
@BigMaik94

Dir reichen ja erstmal auch nur + und - oder?

Sorry, du kannst dein erg2 streichen, aus erg1 nen int machen und dann:

int erg1 = Integer.parseInt(splitArray[0]) + Integer.parseInt(splitArray[1]))

0
@thedafelix

ja hätten mir gereicht. ich habe es jetzt aber anders gelöst...

ich lasse immer " + " hinzufügen... dann lass ich auf " " splitten...

bekomme also zwei werte (zah1 + zah2) und nen char(operator) daraus habe ich mir jetzt ne switsch case gebastelt.

trozdem danke für deine hilfe, hat mir sehr weitergeholfen!

0

Kommt darauf an, wie viel das Ding können soll. Wenn du wirklich immer nur 2 Zahlen und eine Rechenart hast kann man das recht schnell "hinbasteln", z.B. split mit einem regulären Ausdruck. Wird dir wahrscheinlich nichts sagen, aber ist nicht besonders schwer in dem Fall.

Das ist wahrscheinlich das, was du erstmal machen willst, oder?

Wenn man auch mehr Zahlen und Operatoren gleichzeitig eingeben und vielleicht sogar Klammern einfügen können soll, wird es ganz schön kompliziert, wenn man das noch nie gemacht hat. Für komplett frei wählbare Ausdrücke (also auch sowas wie (5 + 3 * 3) / 53) braucht man einen vernünftigen Parser, dafür gibts mehrere Möglichkeiten. Ich habe vor einiger Zeit mal einen geschrieben, allerdings ist der in Scala geschrieben und damit ist das ziemlich einfach ;)

bingo erstmal nur zwei zahlen und ein zeichen...

ja bei dem anderen habe ich das hier gefunden: http://www.java-forum.org/allgemeines/12306-parser-fuer-mathematische-formeln.html

aber das is mir noch zu umständlich... habe auch schon ein label drinn dass immer nur zwei zahelen und ein zeichen funktionieren^^

0
@BigMaik94

Das sieht echt umständlich aus, das liegt aber auch an Java ;)

Kannst ja mal nach regulären Ausdrücken (oder regular expressions) in Java suchen, die sind dafür sehr praktisch.

0
@tobistenzel

naja du und der unter dir ihr habt mich gemeinsam auf meine wahrscheinliche lösung, zm die die ich vorerst nehmen werde :D

muss ich gleich mal ausprobieren^^

0
@BigMaik94

mein code schnippsel an entsprechender stelle (im acionlistener vom "=" button):

String feld = teingabe.getText();

  if (feld.contains("+")) {
      String[] splittArray = feld.split("+");
      String erg1 = splittArray[0] + splittArray[1];
      int erg2 = Integer.parseInt(erg1);
      teingabe.setText(""+erg2);
   }
0
@BigMaik94

asso sollte dazu sagen das es natürlich nciht funktioniert^^

0
int i = Integer.parse("1+1") // 2

errechnet aus einer Zeichenfolge einen String.

Bei switch oder anderen Grundlegenden Fragen einfach mal bei "Java ist auch eine Insel" -> http://openbook.galileocomputing.de/javainsel/javainsel_02_005.html#dodtp8104e320-3a51-46e8-8680-6b90a01d8aa9 schaun

Soll heißen, der Rechnet das allein anhand der zeichenkette, oder muss ich da noch irg was beachten?

0
@BigMaik94

solange nur Ziffern und Rechenzeichen in der Zeichenkette drinn sind rechnet der das aus und gibt das als Integer aus. Ansonsten gibts ne Parseexception und du musst mit try/catch arbeiten.

0
@BigMaik94

irgendwie will das nicht so recht. mein Codeabschnitt siht jetzt wie folgt aus:

__

String feld =teingabe.getText();

int erg = Integer.parseInt(feld);

teingabe.setText(""+erg); __

aber bringt mir kein Ergebniss... lediglich wenn ich nur eine Zahl eingebe und nicht zwei samt Rechenzeichen Hab ich irgendetwas falsch gemacht? (teingabe ist die bezeichnung des eingabefeld...)

0
@BigMaik94

Ja, 2 Sachen:

  • du bist auf einen falschen Tipp hereingefallen
  • du hast die JavaDoc nicht gelesen

http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html

In dieser Klasse gibt es keine statische Methode "parse" welche Rechnezeichen auswertet. Auch steht in der Doc von parseInt eindeutig, dass der String mit Ausnahme des Vorzeichens nur aus Dezimalziffern bestehen darf. Rechenzeichen werden also nicht ausgewertet und führen zu einer NumberFormatException.

0
@Templarthelast

Kann das sein, dass du eine andere Programmiersprache oder eine bestimmte Bibliothek meinst? Mit Standard-Java geht das jedenfalls nicht, habs gerade ausprobiert und hätte mich auch stark gewundert, wenn das geht ;)

0
@tobistenzel

ich sag ja das oben war miene grundidee und habe auch geschrieben das ich nciht genau wiß wies geht. deswegen hab ich ja auch hier gefragt.

wenn also einer ne idee hat, wie es funktioniert, wäre das toll :)

0

Mit java anfangen und welche programme?

Hallo ich wollte mit java anfangen zu Programmieren also vorher habe ich mit batch programmiert und wollte jetzt halt umsteigen und habe gemerkt das es echt schwer ist umzusteigen das wegen wollte ich erstens fragen was für Programme Brauch ich um mit java zu programmieren Und wie lässt man einen Text anzeigen (mit voller Erklärung bitte) und was man mit java alles machen kann danke :)

...zur Frage

Java Polymorphie Aufgabe - Wie ist das zu lösen?

Hi, muss heute noch die Aufgabe lösen, die ich als Bild hochgeladen habe. Bin dabei leider ziemlich ratlos. Im Internet sind die Erklärungen noch komplizierter als auf meinen Arbeitsblättern. Kann mir jemand erklären, wie ich vorgehen muss? Habe bis jetzt die "rohen" Klassen geschrieben ohne die Testklasse mit main methode. Meine Haupträtsel: Wie programmiere ich die Methoden der Klasse "Kunde"? Was ist mit dieser Liste gemeint und wie kann ich diese erzeugen, sodass das programm funktioniert? Wie legt man die Anzahl bei den Assoziationen fest, die an den Pfeilen notiert ist?

Danke im Voraus!

...zur Frage

Matheaufgabe in String in Java

Hi Leute,

es geht um die Programmiersprache Java. Ich habe einen String in dem eine Rechenaufgabe steht. Nun will ich das Ergebnis der Aufgabe in einem Integer speichern. Beispiel:

String aufgabe = 10+11; int loesung;

loesung müsste also 21 sein. Geht das irgendwie, ohne dass ich den ganzen String zerlegen muss? Es kommen später evtl noch andere Rechenzeichen dazu...

Danke für eure Antworten. sarManu

...zur Frage

Warum funktioniert dieser Java-Code nicht, wenn ich ihn ausführe?

package love;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import love.Var;

public class KeyHandler implements KeyListener {
  
  static int tempKeyHandler = 0;

  static int escape = 0, escape2 = 0;

  @Override
  public void keyPressed(KeyEvent f) {
    if (f.getKeyCode() == KeyEvent.VK_ESCAPE) {
      if (escape == 0) {
        Var.pause = true;
        Var.imSpiel = false;
        Var.nimSpiel = false;
        Var.himSpiel = false;
        escape--;
        escape2++;
      }

      if (escape2 >= 1) {
        Var.pause = false;
        Var.imSpiel = true;
        Var.nimSpiel = false;
        Var.himSpiel = false;
        escape = 0;
      }

      System.out.println(KeyHandler.escape);
      System.out.println(Var.imSpiel + " + " + Var.himSpiel + " + " + Var.nimSpiel + " + " + Var.pause);
    }
  }
}
...zur Frage

Java BlueJ: switch-case Anweisung Problem

Hallo,

ich wollte bei der switch- case Anweisung in die Klammer hinter case eine Bedingung schreiben, also z.B. : case(<17). Leider funktioniert das nicht, kann man dies auf eine andere weise tun? ich möchte viele Fälle mit bedingungen machen, wobei der Block ausgeführt wird bei der die Bedingung wahr ist.

...zur Frage

Java String darf nur bestimmte Buchstaben enthalten?

Wie kann ich prüfen, dass ein vom User eingegebener String nur bestimmte Buchstaben enthalten darf? Also man soll durch das Programm eine römische Zahl eingeben. Der String darf nur die Großbuchstaben X I und V enthalten. Wenn ein anderes Zeichen dabei ist, muss man den String erneut eingeben. Dabei dürfen die erlaubten Buchstaben mehrmals vorkommen.

Bei diesem Schritt komme ich einfach nicht weiter.

Hoffe ihr könnt mir bei diesem Problem helfen

...zur Frage

Was möchtest Du wissen?