Wie addiere bzw. subtrahiere ich beliebig viele übergebene Programmparameter in Java?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Die Parameter bekommst du über das String[] args in der main Methode.
Hier habe ich eben etwas programmiert:

public static void main (String[] args) throws java.lang.Exception {
if(args.length < 3){
throw new Exception("Mindestens drei Parameter: 2 Zahlen und das Zeichen");
}

int[] numbers = new int[args.length];
numbers[numbers.length - 1] = args[args.length - 1].charAt(0) == '+' ? 1 : -1;
for(int i = 0; i < numbers.length - 1; ++i){
numbers[i] = Integer.parseInt(args[i]);
}
System.out.println(sum(numbers));
}

public static int sum(int... numbers){
int operator = numbers[numbers.length - 1];
int base = numbers[0];
for(int i = 1; i < numbers.length - 1; ++i){
base += operator * numbers[i];
}
return base;
}
Copyyy  05.01.2017, 00:23

-snip zu spät dafür, sry :D-

Außerdem steht da, man kann davon ausgehen, dass immer min. 2 Zahlen übergeben werden (also Exception unnötig, da nie gethrowed wird).

1
SchoenerElch  07.01.2017, 10:13

Danke für den Stern! :D

0

Nutze das args-Array der Main-Methode. Von diesem wertest du das letzte Element via switch-case aus, um die Rechenart zu ermitteln. Für die Rechnung iterierst du über die vorherigen Elemente (0 bis Länge-1), wandelst jedes in eine Zahl um und nutzt es für die Rechnung.

ralphdieter  05.01.2017, 08:17

die vorherigen Elemente (0 bis Länge-1)

0 bis Länge-2

(um 00:14 Uhr ist so ein Patzer verzeihlich)

0

Probiere das ganze mit einem switch-Befehl:

switch(operator) {
case "-": return 1-2-2;
case "+": return 1+2+3;
}

public int doMath(char operator, int... numbers) {
int result = 0;
if(operator == '-') {
result = numbers[0];
for(int i = 1; i < numbers.length; i++) {
result -= numbers[i];
}
} else {
for(int i = 0; i < numbers.length; i++) {
result += numbers[i];
}
}


return result;
}