MarkAndersson skrev:Ja den var ret nem, endelig noget jeg også havde nemt ved
Jeg prøver at lave nogle betingelser for hvilke System.out kommandoer der skal udskrives. I min if statement skal jeg taste (gange(1,2)*gange(1,2,3) for at få det til at virke. Kan man gøre det med mindre kode mon?
EDIT: Kan godt være jeg har misforstået hvad du egentlig spørger om, men nu står det her ihvertfald.
Hvorvidt du kan formindske dine kald, ved jeg ikke - men lige i dit tilfælde dér, kan du jo lave en metode der uanset antal kan gange det hele sammen.
Husk reglerne for gange - rækkefølgen er ligegyldig. Så om du laver konstruktører til hvert tilfælde, og gange deres resultater sammen - eller om du bare ganger alle "5" tal sammen, giver det samme:
Kode: Vælg alt
public static void main(String[] args) {
System.out.println("(1*2)*(1*2*3)=" +multiply(new int[]{1,2,3,1,2}));
System.out.println("(1*2)*(1*2*3)=" +gange(1,2)*gange(1,2,3));
}
public static int multiply(int[] numbers) {
int output = 1;
for (int i = 0; i < numbers.length; i++) {
output = output * numbers[i];
}
return output;
}
public static int gange(int x, int y)
{
return x*y;
}
public static int gange(int x, int y, int z)
{
return gange(x,y)*z;
}
Output:
Kode: Vælg alt
(1*2)*(1*2*3)=12
(1*2)*(1*2*3)=12
Umiddelbart er koden ikke kortere - men overvej fleksibiliteten af, at du kan indsætte lige hvad du vil, og det bliver stadig ganget; med én metode. Omvendt skulle du lave en kontruktør til hver eneste antal gangestykker, eller lave kombinationer af dine allerede eksisterende metoder.
Alternativt er der varargs:
Kode: Vælg alt
public static void main(String[] args) {
System.out.println("(1*2)*(1*2*3)=" +multiply(1,2,3,1,2));
}
public static int multiply(Integer... args) {
int output = 1;
for (int i : args) {
output = output * i;
}
return output;
}