Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hi hab hier ein prog gemschriebn was addieren und subtrahieren kann mit irgendeinen string aber irgendwie funktioniert das programm nicht beim ausführen ...
bitte um hilfe.
Java:
package calc;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
System.out.print("Please enter a term: ");
int var1, var2, sum = 0, count = 0;
String rechenop;
rechenop = System.in.toString();
StringTokenizer st = new StringTokenizer(rechenop, " ");
int tokens = st.countTokens();
if (tokens % 2 != 0) {
count = (tokens - 1) / 2;
for (int i = 0; i < count; i++) {
var1 = Integer.parseInt(st.nextToken());
sum = var1;
String op = st.nextToken();
if (op.equals("+")) {
var2 = Integer.parseInt(st.nextToken());
sum = sum + var2;
var2 = var1;
} else if (op.equals("-")) {
var2 = Integer.parseInt(st.nextToken());
sum = var2 + var2;
var2 = var1;
}
}
System.out.write(sum);
} else {
System.out.println("Incorrect Format");
}
}
}
jo den fehler hab i scho ausbesstert mit io.readline.. aber hab trotzdem noch einen fehler und zwar diesen:
Exception in thread "main" java.lang.NumberFormatException: For input string: "+"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:449)
at java.lang.Integer.parseInt(Integer.java:499)
at calc.Main.main(Main.java:31)
hast was mim typecast zu tun von string to int aber hab keine ahnung wie ichs sonst machen sollte
"+" ist auch keine Zahl, deswegen ist die Fehlermeldung ganz ok.
Füge in dein Programm noch einige Debugausgabe wie "Untersuche jetzt Teilstring xy", "Es ist eine Summe, versuch dies und das", dann siehst du, an welcher stelle es kracht.
package calc;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
System.out.print("Please enter a term: ");
int var1, var2, sum = 0, count = 0;
String rechenop;
rechenop = IO.readLine();
StringTokenizer st = new StringTokenizer(rechenop, " ");
int tokens = st.countTokens();
if (tokens % 2 != 0) {
count = (tokens - 1) / 2;
var1 = Integer.parseInt(st.nextToken());
System.out.println(var1);
sum = var1;
for (int i = 0; i < count; i++) {
String op = st.nextToken();
System.out.println(op);
if (op.equals("+")) {
var2 = Integer.parseInt(st.nextToken());
System.out.println(var2);
sum = sum + var2;
var1 = var2;
} else if (op.equals("-")) {
var2 = Integer.parseInt(st.nextToken());
System.out.println(var2);
sum = sum + var2;
var1 = var2;
}
var1 = Integer.parseInt(st.nextToken());
System.out.println(var1);
}
System.out.write(sum);
} else {
System.out.println("Incorrect Format");
}
}
}
Konsole:
run:
Please enter a term: 4 + 2 + 1
4
Exception in thread "main" java.lang.NumberFormatException: For input string: "+"
+
2
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:449)
at java.lang.Integer.parseInt(Integer.java:499)
at calc.Main.main(Main.java:65)
Java Result: 1
BUILD SUCCESSFUL (total time: 6 seconds)
1. Das Problem dürfte die Zeile 65 sein; dort holst Du Dir schon das nächste Token, welches wieder ein Rechenzeichen sin muss (und eben keine Zahl). Lass das einfach weg.
2. System.out.write lässt sich zwar übersetzen; funktioniert aber i.d.R. nicht wie von Dir gewünscht; verwende lieber System.out.print oder System.out.println
3. Die Behandlung der Subtraktion erscheint mir falsch