[Java] Parameterübergabe: 2 * 5 wird zu 2 d 5?

daboss

daboss

Kaiser
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:
Code:
int x, y;
char chOperator;

// Some default values:
x = 5;
y = 4;
chOperator = '*';
Alternativ kann man über die Kommandozeile beim Programmaufruf entsprechende Parameter übergeben:
Code:
// 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:
Code:
// 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):
Code:
We will now calculate 2 * 4:
2*4=8

Aber beim Aufruf mit Parametern von der Kommandozeile nicht:
Code:
$ 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!
 
Hi,

ich haette da eine Idee, ja....

Aber beim Aufruf mit Parametern von der Kommandozeile nicht:
Code:
$ 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
 

Ähnliche Themen

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

JBidWatcher: Problem bei loading Auctions in Verbindung mit mySQL

dovecot und postfix Konfiguration Problem

Windows clients können nicht mehr auf lange laufendes System zugreifen

Aufgabe in C

Zurück
Oben