Házi feladat
Alapfejezet - Az értékadás-értékhozzárendelés operátorai
Az a += b művelet felhasználásával és csakis a fejezetben leírtak szerint adjuk össze a következőt: 1 + 2 + 3 + 4 + 5! A kód kissé döcögős lesz, de most építkezzünk abból, ami rendelkezésünkre áll.
Egyik teljesen kezdő tanítványom a következő megoldást adta:
public class Main {
public static void main(String[] args) {
int a = 1;
int b = 2;
int c = 3;
int d = 4;
int e = 5;
System.out.println(a += b + c + d + e);
}
}
Végeredmény:
15
A megoldás természetesen jó, hiszen szerepel benne az a += b művelet és korrekt a végeredmény. Kezdőszinten ez elég is, de ki kell jelentenünk, hogy a kód nem optimális, ezért tovább kell optimalizálnunk. Legelőször el kell tüntetnünk a sok változódeklarálást, mert a program terjedelméhez képest sok memóriahelyet foglal:
public class Main {
public static void main(String[] args) {
int a = 1;
int b = 2;
System.out.println(a += b);
b = 3;
System.out.println(a += b);
b = 4;
System.out.println(a += b);
b = 5;
System.out.println(a += b);
}
}
Végeredmény:
3
6
10
15
public class Main {
public static void main(String[] args) {
int a = 1;
int b = 2;
a += b;
b = 3;
a += b;
b = 4;
a += b;
b = 5;
System.out.println(a += b);
}
}
Végeredmény:
15
For ciklus bevetésével a kód jóval letisztultabbá válik:
public class Main {
public static void main(String[] args) {
int a = 1;
for(int b = 2; b <= 5; b++) {
a += b;
System.out.println(a);
}
}
}
Végeredmény:
3
6
10
15
public class Main {
public static void main(String[] args) {
int a = 1;
for(int b = 2; b <= 5; b++) {
a += b;
}
System.out.println(a);
}
}
Végeredmény:
15
Egy internetes olvasó a következő megjegyzéseket és kódmegoldást küldte nekem:
Szó szerint vettem, hogy az a+=b műveletet használjuk és hogy csakis a fejezetben leírtak szerint csináljam, ezért például a for ciklus eszembe sem jutott, hiszen előtte érintőlegesen volt csak szó róla. Az én megoldásom:
public class Main {
public static void main(String[] args) {
int a = 1;
int b = 1;
System.out.println(a+(a+=b)+(a+=b)+(a+=b)+(a+=b));
}
}
Végeredmény:
15
Megjegyzem, először elszúrtam, mert a legelső "a+"-t a végére tettem és
természetesen nem jött ki az eredmény, de rávilágított a sorrend fontosságára.