Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » Logik » Java Rechnung » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 7 Beiträge
Björn

Danke für die Antworten :-)
eulerscheZahl

Ist mir dann auch noch aufgefallen, siehe edit.
replaceAll erwartet einen regulären Ausdruck, da ist das * schon reserviert, muss also escaped werden.
Björn

Mist, ich hatte bei 576 die Anführungszeichen vergessen.

code:
1:
name = name.replaceAll ("16*6","576");


So war es eigentlich gedacht, wird aber auch nichts ändern?
eulerscheZahl

Strings sind immutable, können also nicht verändert werden. Daher geben Stringoperationen immer einen neuen String zurück. Den musst du auch auswerten:
code:
1:
name = name.replaceAll ("16*6","576");

Das zweite Argument muss ein String sein.
Ich weise dich aber darauf hin, dass das Ergebnis der Multiplikation 96 ist.

Und das '*' macht Probleme, weil es in regulären Ausdrücken eine andere Bedeutung hat.
Björn

Super, danke dir. Da liegt das Problem.

Eine weitere Frage hätte ich noch:

Wenn ich den String name nehme und möchte mit der Methode replaceAll etwas ersetzen, funktioniert es nicht, z.B.

String name = "15-16*6+24";
name.replaceAll ("16*6",576);

Allerdings kommt da immer wieder der Ausgangsstring heraus. Liegt das vielleicht an dem Malzeichen, da es ein Char ist?

Vielen Dank :-)
eulerscheZahl

code:
1:
for (int i=0; i<1000;i++)

Grob überschlagen hat der Inhalt der Variablen name weniger als 1000 Zeichen. Da kriegst du ein OutOfBounds bezüglich der oberen Grenze.
Wenn du dann bei --i; abziehst und vor dem '*' nicht an der selben Stelle '+' und '-' hast - was ja gar nicht geht, du brächtest && statt || - willst du auf charAt(-1) zugreifen. Das ist die Exception, die du letztlich angezeigt bekommst.
Björn Java Rechnung

Meine Frage:
Hi zusammen :-)

folgendes Problem: Ich habe einen String mit Zahlen und Rechenzeichen. Ich möchte vor dem Mal-Zeichen die Zahl inklusive Vorzeichen mittels eines Substrings auslesen. Da im String ja + oder - und auch * oder / vorkommen kann wollte ich diese Fälle in der while-Anweisung abdecken. Leider bekomme ich immer eine OutofBounds-Exception (Zeile 23). Wenn ich nur eine Anweisung abfrage (also plus zum Beispiel) funktioniert es, nur bei mehreren nicht. Woran könnte das liegen?

Vielen Dank :-)

Meine Ideen:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
package javarechnung;

public class JavaRechnung 
{
    public static void main(String[] args)  
    {
        String name = "15-16*6+24";
        char mal = '*';
        char minus = '-';
        char plus = '+';
        int zwischenSpeicher = 0;
        String zahl1 = "";
        
        for (int i=0; i<1000;i++)
        {
            if (name.charAt(i)==mal)
            {
                zwischenSpeicher = i;  
                do
                {
                    --i;
                }
                while (name.charAt(i)!=minus || name.charAt(i)!=plus); 
                zahl1=name.substring(i,zwischenSpeicher);
                break;
            }
        }
        System.out.println(zahl1);
    }
}