# Taschenrechner Ausgabe in einer Zeile



## javanator1994 (2. Nov 2010)

hayy leute,
mein lehrer hat mir die aufgabe gegeben einen taschenrechner zu programmieren ... aber nicht als applet sondern als eine simple eingabe
also in der ausgabe steht in der ersten zeile :
geben sie zahl eins ein : 15
geben sie ein rechenoperator ein : +
geben sie zahl zwei ein : 15
das ergebniss lautet : 30

jetzt will mein lehrer aber das das alles in einer zeile geschieht -->  15 + 15 = 30

wie soll das gehen ???
danke im voraus


----------



## MiDniGG (2. Nov 2010)

Mit 
	
	
	
	





```
System.out.print(String str);
```
 wird die Zeile nicht umgebrochen...


----------



## javanator1994 (2. Nov 2010)

oke ... ^^
aba kann ich das einfach irgendwo hinsetzten oder muss ich das an einer bestimmten stelle des programmcodes einsetzten?


----------



## ARadauer (2. Nov 2010)

> wie soll das gehen ???


naja mit indexof und subtring der klasse string, musst du dir die eingabe zerteilen und auswerten...


----------



## javanator1994 (2. Nov 2010)

hmm .. 
also sry aber .. bin ein anfänger und kann damit nich viel anfangen xDD
also das ist mein programm :


```
import java.util.*;

class calc2
{

    public static void main (String[]args)
    {

        double a,b;
        double ausgabe=0.00;
        char rechenop;
        Scanner s = new Scanner (System.in);


        System.out.print("Geben sie Zahl 1 ein:	");
            a = s.nextInt();

 		System.out.print("Eingabe Rechenoperator:	");
            rechenop = s.next().charAt(0);

        System.out.print("Geben sie Zahl 2 ein:	");
            b = s.nextInt();


        System.out.println();


        switch (rechenop)
        {
        case '+':
            ausgabe = a+b;
            System.out.println("Das Ergebniss lautet: " +ausgabe);
            break;

        case '-':
            ausgabe = a-b;
            System.out.println("Das Ergebniss lautet: " +ausgabe);
            break;

        case '*':
            ausgabe = a*b;
            System.out.println("Das Ergebniss lautet: " +ausgabe);
            break;

        case '/':
            ausgabe = a/b;
            System.out.println("Das Ergebniss lautet: " +ausgabe);
            break;

        default:
            System.out.println("Falsche Eingabe");
            break;
		}
	}
}
```

was muss ich wo einsetzten damit am ende alles in einer zeile steht ?


----------



## MiDniGG (2. Nov 2010)

Hm. OK. Versteh es nicht ganz... 

Denn teilweise wird ja was vom User eingeben (15 + 15) und teilweise vom Programm ausgegeben ( = 30).
Das kann man eigentlich nicht in eine Zeile schreiben... -.-'
Was Du machen kannst ist, wie ARadauer schon sagte die Eingabe vom User aufzusplitten und dann mit den einzelnen Teilen Rechnern. Am Ende könntest Du dann nochmal alles in einem ausgeben.

Also bspw.:

```
System.out.print(a + " " + op + " " + b + " = " + erg);
```

oder so.


----------



## javanator1994 (2. Nov 2010)

verstehe ich nicht 
also theoretisch muss ja nur hier etwas verändert  oder hinzugefügt werden

System.out.print("Geben sie Zahl 1 ein: ");
a = s.nextInt();

System.out.print("Eingabe Rechenoperator: ");
rechenop = s.next().charAt(0);

System.out.print("Geben sie Zahl 2 ein: ");
b = s.nextInt();


System.out.println();




oder ???


----------



## MiDniGG (2. Nov 2010)

Ich check immer noch nicht was Du willst.
Willst Du, dass der User "15 + 15" eingibt und dann 30 bekommt?
Oder soll der User
15
+
15
eingeben und bekommt dann "15 + 15 = 30" also einfach nochmal die ganze Rechnung?
Oder soll der User "15 + 15" eingeben und bekommt dann in der selben Zeile ein " = 30" angehängt?

Letzteres geht nicht!
Die ganze Rechnung nochmal aufgeben steht ja oben in meinem letzten Beitrag.
Beim Ersten musst Du einfach schaun, dass Du bspw. bei Leerzeichen splittest und dann mit den einzelnen Werten weiter umgehst.

bspw.:

```
String[] arr = str.split(" ");
int a = Integer.parseInt(arr[0]);
int b = Integer.parseInt(arr[2]);
String op = arr[1];
```

wobei str dann der String ist den der User eingegeben hat.


----------



## SlaterB (2. Nov 2010)

@javanator1994
am Anfang ein unsinniger Titel mit lauter '?!?!?'
nun Java-Code ohne Java-Tags

gib dir doch ein bisschen Mühe im Forum, wenn schon nicht in Java..


----------



## javanator1994 (2. Nov 2010)

also
der user soll in einer zeile eingeben 15 + 15 
und ich hab das so verstanden das hinterher in der selben zeile noch = 30 herauskommen soll was aber deiner aussage nach nicht möglich ist
wäre es möglich das der user die eingabe die er macht also 15 + 15 in einer zeile schreibt und das was berechnet wird also = 30 in der nächsten zeile ausgegeben wird ?


----------



## javanator1994 (2. Nov 2010)

ja tut mir leid slaterB 
das nächste mal wirds besser versprochen


----------



## MiDniGG (2. Nov 2010)

Hab ich schon geschrieben...
Den String splitten (wie in meinem Beispielcode)... Vorraussetzung dafür ist, dass der User "15 + 15" eingibt. Also mit Leerzeichen. Ansonsten wie ARadauer meinte String#indexOf und String#substring nutzen! (die JAVA API hilft da!)


----------



## Jango (2. Nov 2010)

javanator1994 hat gesagt.:


> was muss ich wo einsetzten damit am ende alles in einer zeile steht ?



println in print ändern


----------



## javanator1994 (2. Nov 2010)

achso oke danke
aber wie splittet man denn einen string ?
oder wie und wo genau muss ich String#indexOf / String#substring verwenden ?
sry leute aba wir haben in der schule bis jetzt nur "hallo welt" programmiert xD und mein betreuer erwartet schon das mit dem taschenrechner von mir also ich peil nixx


----------



## javanator1994 (2. Nov 2010)

Jango hat gesagt.:


> println in print ändern



habe ich schon versucht bringt nix ...


----------



## Jango (2. Nov 2010)

javanator1994 hat gesagt.:


> achso oke danke
> aber wie splittet man denn einen string ?
> oder wie und wo genau muss ich String#indexOf / String#substring verwenden ?
> sry leute aba wir haben in der schule bis jetzt nur "hallo welt" programmiert xD und mein betreuer erwartet schon das mit dem taschenrechner von mir also ich peil nixx



Lesen!
Sich selber bilden!

edit:

Alles in einer Zeile anzuzeigen geht nicht, weil 'Enter' auch immer ein Zeilenumbruch ist. 
In C wäre sowas möglich, weil es da formatierte Ein-Ausgaben gibt (Stichwort: ungepuffert).


----------



## ARadauer (2. Nov 2010)

> aber wie splittet man denn einen string ?
> oder wie und wo genau muss ich String#indexOf / String#substring verwenden ?
> sry leute aba wir haben in der schule bis jetzt nur "hallo welt" programmiert xD und mein betreuer erwartet schon das mit dem taschenrechner von mir also ich peil nixx


Mhn sollen wir dir jetzt deine Aufgabe schreiben?
 hier gibts die Doku von der Standard API Java 2 Platform SE 5.0 Links unten die Klasse String suchen, da sind die Methoden beschrieben.

Wenn du konkrete Fragen stellst helfen wir dir gerne. Wenn du nur rum jammerst, wird dir das hier nix helfen ;-)

Das wär noch eine Lösung:

```
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class Rechner {

   public static void main(String[] args) throws IOException {
      BufferedReader r = new BufferedReader(new InputStreamReader(System.in));

      System.out.print("Formel eingeben: ");
      String formel = r.readLine();
      ScriptEngineManager factory = new ScriptEngineManager();
      ScriptEngine engine = factory.getEngineByName("JavaScript");

      try {
         engine.eval("var v = eval('" + formel + "')");
         double b = (Double) engine.get("v");

         System.out.println("Ergebnis: " + b);
      } catch (ScriptException e) {
         System.out.println("Das war wohl nix");
         e.printStackTrace();
      }

   }
}
```


----------



## Jango (2. Nov 2010)

ARadauer hat gesagt.:


> Wenn du konkrete Fragen stellst helfen wir dir gerne. Wenn du nur rum jammerst, wird dir das hier nix helfen ;-)



Und dann kommt ein Lösungsvorschlag....  :lol:


----------



## ARadauer (2. Nov 2010)

Jango hat gesagt.:


> Und dann kommt ein Lösungsvorschlag....  :lol:



ein lösungsvorschlag mit dem sein lehrer 100%ig nicht zufrieden ist


----------



## javanator1994 (2. Nov 2010)

ARadauer hat gesagt.:


> ein lösungsvorschlag mit dem sein lehrer 100%ig nicht zufrieden ist



trz vieln vielen dank


----------



## Andi_CH (2. Nov 2010)

Jango hat gesagt.:


> Lesen!
> Sich selber bilden!



... und villeicht zuhören im Unterricht  *SCNR* (hab selbst auch ziemlich viele Jahre Schule hinter mir - das war immer das beste Rezept  )


----------



## javanator1994 (2. Nov 2010)

jaa schon kla 
aba die aufgabe hat mir nicht mein lehrer sondern mein betreuer vom praktikum gegeben ich mache ein einjahrespraktikum ...^^
weil in der schule sind wir im mom dabei zu lernen was integer bedeutet xD
in der schule komme ich ja auch gut mit nur mein betruer erwartet etwas zu viel .. ^^


----------



## ARadauer (2. Nov 2010)

> der schule komme ich ja auch gut mit nur mein betruer erwartet etwas zu viel


tut er nicht! Jeder zweite Student darf einen Taschenrechner schreiben...

ok wo ist nun das problem. du suchst dir mit indexOf das +,-,* oder das /
dann schneidest du dir mit substring die beiden zahlen raus und parst mit Integer.parse zu Zahlen und dann rechnest du das ergebnis aus. jed nach deas du für ein rechenzeichen gefunden hast...

was klappt jetzt genau nicht?


----------



## javanator1994 (2. Nov 2010)

doch tut er !!
das hat nix mit statistiken zu tun sondern etwas mit den erfahrungen die die studenten schon haben ! du kannst nicht einen studenten der vorher nix mit it gemacht hat und einen studenten der sich schon siet jahren damit beschäftigt vergleichen !!

ja jetzt klappt ja alles vorher hat es nicht geklappt


----------



## thE_29 (2. Nov 2010)

Wenn hier nicht gleich Ruhe ist, hagelt es Sperren..

Kanns ja echt nicht sein, dass man sich immer wie in einem Kindergarten benehmen muss!


----------



## ARadauer (2. Nov 2010)

OHHHH jetzt hab ich das alles nicht lesen könne.. Flames sind doch immer eine Erheiterung eines trockenen Programmerier Altage ;-)


----------



## Jango (2. Nov 2010)

ARadauer hat gesagt.:


> OHHHH jetzt hab ich das alles nicht lesen könne.. Flames sind doch immer eine Erheiterung eines trockenen Programmerier Altage ;-)



Hahahaha...
Hier versteht man einfach keinen Spaß - oder die Moderatoren handeln nach Lust und Laune - dann haben sie Spaß...:bahnhof:

edit:



thE_29 hat gesagt.:


> Wenn hier nicht gleich Ruhe ist, hagelt es Sperren..



Mit welchem juristischem Hintergrund? Weil dir die Suppe gerade nicht schmeckt?


----------



## SlaterB (2. Nov 2010)

genau

bzw.
java-forum.org - Regeln java-forum.org


----------



## Tomate_Salat (2. Nov 2010)

Schade hätte das geflame gerne gelesen, muss ja gut abgegangen sein ^^.

Schau vllt mal hier Parser für Math. formeln.

Weis nicht mehr, wie tiefgründig das ganze war, aber vllt hilfts ja.

MFG

Tomate_Salat


----------

