PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Java] Parameterübergabe: 2 * 5 wird zu 2 d 5?



daboss
29.07.2009, 10:49
Heyho,

ich wollte eben so einen kleinen billigen Taschenrechner in Java implementieren (und bissl mit RMI und so spielen). Dabei ist eine kleine Beispielrechnung fest eincodiert:


int x, y;
char chOperator;

// Some default values:
x = 5;
y = 4;
chOperator = '*';

Alternativ kann man über die Kommandozeile beim Programmaufruf entsprechende Parameter übergeben:


// The user can provide some values via command-line,
// then we expect a string like "<x> <Operator> <y>":
if (args.length == 3) {
try {
x = Integer.parseInt(args[0]);
y = Integer.parseInt(args[2]);
chOperator = args[1].charAt(0);
} catch (NumberFormatException e) {
[...]
}


Der Operator-Test in switch:


// Calculate according to the operator:
switch (chOperator) {
case '+':
System.out.println(x + String.valueOf(chOperator) + y + "="
+ calc.add(x, y));
break;
case '-':
System.out.println(x + String.valueOf(chOperator) + y + "="
+ calc.sub(x, y));
break;
//case 'd':
case '*':
System.out.println(x + String.valueOf(chOperator) + y + "="
+ calc.mult(x, y));
break;
case '/':
System.out.println(x + String.valueOf(chOperator) + y + "="
+ calc.div(x, y));
break;
default:
System.err.println("Operator " + String.valueOf(chOperator)
+ " is not yet supported! Please use one of the following:"
+ " +, -, *, /");
}


Wird die eincodierte Belegung genutzt, läufts wunderbar (auch, wenn ich in Eclipse beim Aufruf Parameter übergebe):


We will now calculate 2 * 4:
2*4=8


Aber beim Aufruf mit Parametern von der Kommandozeile nicht:


$ java uni.rmi.client.CalculatorClient 2 * 5
Operator d is not yet supported! Please use one of the following: +, -, *, /


Mit +,-,/ geht's immer und überall. Aber das *-Problem versteh ich nicht ?( Wenn ich den Operator nicht zu char konvertiere, sondern als String stehen lasse (und dann mit equals vergleiche), wird aus * ein "de" ?(

Hat jemand nen Tipp, wo der Hase falsch läuft, und wie's zu beheben ist? Ich bin im Moment echt ratlos.

Merci schonmal!

bytepool
29.07.2009, 11:00
Hi,

ich haette da eine Idee, ja....



Aber beim Aufruf mit Parametern von der Kommandozeile nicht:


$ java uni.rmi.client.CalculatorClient 2 * 5
Operator d is not yet supported! Please use one of the following: +, -, *, /


Du schreibst nichts davon, dass du das Sternchen quotest. Es wird aber von der shell interpretiert (globbing), bevor es an das Programm weitergegeben wird.

Eventuell ist das schon der Fehler? ;)

mfg,
bytepool

daboss
29.07.2009, 11:06
Arg, tatsächlich. Daran liegts :/

Danke dir :)