Stringaudruck in Integer wandeln

Verjigorm

Top Contributor
wenn du nur "x+y" rechnen willst, kannst du ganz einfach mit ein paar Stringfunktionen arbeiten.

Kommen dann noch weitere Rechenarten dazu, musste den Parserlink folgen ;)
 
G

Gastredner

Gast
Wenn es wirklich nur um simple Dinge wie "1+1" oder "2*3" geht, dann kannst du den String zerlegen und dann über den char den Operator bestimmen:
Java:
public void printResult(String input) {
	String[] elements = input.split(" ");	// Trennt Ausdrücke wie "1 + 13" - wichtig sind die Leerzeichen!
	int a = Integer.parseInt(elements[0]);
	int b = Integer.parseInt(elements[2]);
	char op = elements[1].charAt(0);
	System.out.println("Result: " + calculate(a, b, op));
}

public int calculate(int a, int b, char op) {
	switch(op) {
	case '+': return a + b;
	case '-': return a - b;
	case '*': return a * b;
	case '/': // Durchfallen lassen.
	case ':': return a / b;
	}
}
Wichtig ist dabei, dass obiger Code wirklich nur ganz primitive Rechnungen durchführen kann - mehr als "a op b" geht nicht. Und die Leerzeichen nicht vergessen. Willst du mehr, so musst du entweder einen bereits geschriebenen Parser nehmen oder dir selbst einen schreiben.
 

Java-Freak

Bekanntes Mitglied
hab ich mal geschrieben, kann eigentlich genau was du willst
Java:
import java.util.ArrayList;


public class SimpleFunktionParser {
	public static boolean isOperator(char c){
		switch(c) {
	    	case '+': return true;
	    	case '-': return true;
	    	case '*': return true;
	    	case '/': return true;
	    	default: return false;
	    }
	}
	public static ArrayList<Object> parse(String str){
		boolean firstOrSecond= true;
		char op = 0; 
		int result = 0; 
		boolean hasfoundOperator = false; 
		boolean firstDouble =false;
		boolean secondDouble =false;
		double firstInNumber = 0, secondInNumber= 0;
		ArrayList<Object> set = new ArrayList<Object>(3);
		str = str.replaceAll(" +", " ");
		str = str.trim(); 
		String firstInString = "", secondInString = "";
		for(int i = 0;i <= str.length()-1;i++){
			if (Character.isDigit(str.charAt(i))){
				if (firstOrSecond){
					firstInString += str.charAt(i);
				}
				else{
					secondInString += str.charAt(i);
				}
			}
			else if(str.charAt(i)== '.'){
				if (firstOrSecond){
					firstDouble = true;
					firstInString += ".";
				}
				else{
					secondDouble = true;
					secondInString += ".";
				}
			}
			else{
				if(isOperator(str.charAt(i))){
					firstOrSecond = false;
					if(!hasfoundOperator){
						op = str.charAt(i);
						hasfoundOperator = true;
					}
					else{
						throw new IllegalArgumentException( "Only one Operator is allowed!!" ); 
					}
				}
				else if(!Character.isWhitespace(str.charAt(i))){
					throw new IllegalArgumentException( "Error in Function" ); 
				}
			}
		}
		if (firstDouble){firstInNumber = Double.parseDouble(firstInString);}else{firstInNumber = Integer.parseInt(firstInString);}
		if (secondDouble){secondInNumber = Double.parseDouble(secondInString);}else{secondInNumber = Integer.parseInt(secondInString);}
		set.add(firstInNumber);
		set.add(secondInNumber);
		set.add(op);
		return set;
	}
	public static double getFirstParam(String st){
		ArrayList<Object> g = parse(st);
		return (Double)g.get(0);
	}
	public static double getSecondParam(String str){
		ArrayList<Object> g = parse(str);
		return (Double)g.get(1);
	}
	public static char getOperator(String str){
		ArrayList<Object> g = parse(str);
		return g.get(2).toString().charAt(0);
	}
	public static double calculate(String bla){
		ArrayList<Object> g = parse(bla);
		double first = (Double)g.get(0);
		double second = (Double)g.get(1);
		char oper = g.get(2).toString().charAt(0);
		switch(oper) {
    		case '+':return first + second;
    		case '-':return first - second;
    		case '*':return first * second;
    		case '/':return first / second;
    		default: return 0.0;
		}
	}
}
und die main zum testen:
Java:
public static void main(String[] args) {
		String bla = "          7/      9.9853      ";
		System.out.println("For Input String: \"" +bla+"\"");
		System.out.println("First Value: "+SimpleFunktionParser.getFirstParam(bla));
		System.out.println("Operator: "+SimpleFunktionParser.getOperator(bla));
		System.out.println("Second Value: "+SimpleFunktionParser.getSecondParam(bla));
		System.out.println("Result: "+SimpleFunktionParser.calculate(bla));
	}
kann im endefekt auch nicht viel mehr als das von Gastredner, ist aber mindestens 3 mal so lang...^^
man kann halt die einzelnen teile und den operator abfragen,doubles sind möglich, und es ist egal wie viele leerzeichen iwo sind...
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
MoxMorris Integer.MAX_VALUE und Double.MAX_VALUE Unterschied Java Basics - Anfänger-Themen 3
Jul1n4tor Scanner error bei Eingabe die kein Integer ist Java Basics - Anfänger-Themen 4
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
JavaBeginner22 Integer in String umwandeln Java Basics - Anfänger-Themen 7
sserio printf integer formatting Java Basics - Anfänger-Themen 17
M Unterschied Integer.toString(x) und x.toString() Java Basics - Anfänger-Themen 22
H Uhrzeitespanne in Integer Wert umrechnen Java Basics - Anfänger-Themen 1
T Java Integer multiplizieren Java Basics - Anfänger-Themen 6
H Fehler bei integer Division Java Basics - Anfänger-Themen 28
D Methoden Plathhalter für Integer in einer Methode Java Basics - Anfänger-Themen 19
StevenGG Java swing "New Integer" Java Basics - Anfänger-Themen 5
C Integer in Vierer-Zahlblöcke aufteilen Java Basics - Anfänger-Themen 11
L integer Java Basics - Anfänger-Themen 6
Zeppi Integer umschreiben Java Basics - Anfänger-Themen 5
rafi072001 Integer Anomalie Java Java Basics - Anfänger-Themen 7
Eule25 Arbeit mit long und int, Error: integer number too large Java Basics - Anfänger-Themen 2
J Transformation zweier Integer in ein Double Java Basics - Anfänger-Themen 26
M Integer aus aus einer Klasse in andere speichern Java Basics - Anfänger-Themen 12
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
D Fibonacci overflow integer Java Basics - Anfänger-Themen 8
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
S Integer Wert wird nicht übernommen Java Basics - Anfänger-Themen 2
V int zu Integer und String Java Basics - Anfänger-Themen 6
H Datentypen Was für eine Format verbirgt sich hinter dem Integer-Wert 053? Java Basics - Anfänger-Themen 2
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
M Regex zum Integer.parseInt Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
S Vergleichen ob der Integer der benutzt eingeben werden soll überhaupt ein int ist Java Basics - Anfänger-Themen 1
S Letzte Zahl eines Integer auslesen? Java Basics - Anfänger-Themen 3
K String in Integer umwandeln Java Basics - Anfänger-Themen 4
G Überprüfen ob alle Ziffern von 1-9 in einem Integer vorhanden sind Java Basics - Anfänger-Themen 6
D integer negativen Wert abspeichern Java Basics - Anfänger-Themen 3
A Mit JComboBox Ergebnis einen Integer aus einer anderen Klasse aufrufen. Java Basics - Anfänger-Themen 2
J Methoden Moving a n integer matrix Java Basics - Anfänger-Themen 3
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
J Erhöhen eines Values als Integer bei gleichen Keys in HashMap Java Basics - Anfänger-Themen 12
CptK Datentypen Integer ArrayList sortieren Java Basics - Anfänger-Themen 2
J Methoden Equals Methode für Integer und Objekte überschreiben? Java Basics - Anfänger-Themen 9
CptK Bestimmten Integer Wert aus Array filtern Java Basics - Anfänger-Themen 2
L String in Integer umwandeln Java Basics - Anfänger-Themen 3
K Datentypen String zu Integer parsen Java Basics - Anfänger-Themen 2
B Liste von Integer -> Nächster Wert bekommen Java Basics - Anfänger-Themen 5
S Integer aus Array filtern Java Basics - Anfänger-Themen 4
F Referenzvariable vom Typ "Integer" definieren. (Klausuraufgabe) Java Basics - Anfänger-Themen 5
M set Integer bzw. set null mit SQL DB Java Basics - Anfänger-Themen 9
H Bubblesort-Zwei Integer auf Dekade vergleichen. Java Basics - Anfänger-Themen 6
B Variablen integer im Array Java Basics - Anfänger-Themen 5
C Liste o.ä. erstellen mit <Integer, <Integer, String> Java Basics - Anfänger-Themen 7
R Kompletten String umwandeln in Integer Java Basics - Anfänger-Themen 10
H 32-Bit Zahl (Integer) in eine IPv4 Adresse umwandeln? Java Basics - Anfänger-Themen 2
Orkanson Datentypen Integer in String umwandeln/hinzufügen Java Basics - Anfänger-Themen 3
O Datentypen Integer mit führender Null Java Basics - Anfänger-Themen 13
M Argument in Integer verwandeln und das Doppelte davon printen Java Basics - Anfänger-Themen 9
D Fehler: String zu Integer Java Basics - Anfänger-Themen 7
L (Integer) Liste nach aufsteigender Summe der Ziffern sortieren (mit Bedingung) Java Basics - Anfänger-Themen 8
b1ck Integer initialisieren bei do-while-Schleife Java Basics - Anfänger-Themen 11
E Integer und Array übergeben Java Basics - Anfänger-Themen 9
W Fehler bei Integer.parseInt() Java Basics - Anfänger-Themen 4
R String in Integer Java Basics - Anfänger-Themen 11
D Komischer Fehler nach <Integer> List Java Basics - Anfänger-Themen 2
J Integer in Array einlesen Java Basics - Anfänger-Themen 14
J Warum ist das ein Unterschied (Integer / int) Java Basics - Anfänger-Themen 2
H Integer in Datei schreiben Java Basics - Anfänger-Themen 2
B OOP Cannot instantiate the type AuDList<Integer> Java Basics - Anfänger-Themen 18
3 ArrayList Integer Wrapper Klasse als Ersatz für normale Arrays Java Basics - Anfänger-Themen 10
K Methoden Integer runden/aufrunden Java Basics - Anfänger-Themen 2
E Erste Schritte Lower Bounded Wildcards <? super Integer> Java Basics - Anfänger-Themen 1
M Datentypen Integer und Float Konflikt Java Basics - Anfänger-Themen 3
J Integer-Werte in Array ein- bzw. auslesen Java Basics - Anfänger-Themen 7
T Integer Wert in andere Methode übergeben Java Basics - Anfänger-Themen 2
N Probleme bei Speicherung eines Integer-Array in Datei speichern Java Basics - Anfänger-Themen 3
C Zwei Integer Arrays "kombinieren" Java Basics - Anfänger-Themen 10
D Integer Fehlermeldung exception Java Basics - Anfänger-Themen 4
M Höchster Integer aus 9 Zahlen Java Basics - Anfänger-Themen 13
I Klassen Integer von BL in GUI übergeben | Fehler Java Basics - Anfänger-Themen 4
T Integer-Objekt über Hash-Funktion in Array ablegen Java Basics - Anfänger-Themen 1
S Integer/Value-Paar in Prio-Queue ohne Comparator Java Basics - Anfänger-Themen 5
D Datentypen Ein Integer Feld in einen String wandeln ohne Nullenunterdrückung Java Basics - Anfänger-Themen 6
R integer zahlenfolge speichern, ausgeben Java Basics - Anfänger-Themen 1
L Summer aller Integer-Zahlen im Intervall [x,y] Java Basics - Anfänger-Themen 6
K ArrayList<Integer> problem Java Basics - Anfänger-Themen 3
L Vom Benutzer eingebene Integer addieren und ausgeben. Java Basics - Anfänger-Themen 11
S integer absteigend sortieren Java Basics - Anfänger-Themen 2
S ArrayList<ArrayList<Integer>> sortieren Java Basics - Anfänger-Themen 3
T Variablen Integer in Stmt Java Basics - Anfänger-Themen 13
B gemischter string zu integer Java Basics - Anfänger-Themen 22
R Big Integer Java Basics - Anfänger-Themen 8
B Erste Schritte Integer Eingabe über Scanner mit Abfangen von Eingabefehlern Java Basics - Anfänger-Themen 3
B Variablen Wertezuweisung bei integer Java Basics - Anfänger-Themen 5
J Integer Werte in Array einlesen Java Basics - Anfänger-Themen 6
E Integer oder Strings spiegeln (in while loop) Java Basics - Anfänger-Themen 6
D String mit Integer Variablen Namen vergleichen, möglich? Java Basics - Anfänger-Themen 6
G Was passiert bei einem Overflow von zwei Integer Java Basics - Anfänger-Themen 6
H Integer.toString(int i) vs. String.valueOf(int i) Java Basics - Anfänger-Themen 12
K Date cannot be cast to java.lang.Integer Java Basics - Anfänger-Themen 4
N Probleme beim Rechnen mit Integer und double Java Basics - Anfänger-Themen 4
A Integer aus Stream to Double Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben