Omvänd array
Hej! Har en uppgift som jag fastnat med.
"Skriv nu ut arrayen i omvänd ordning (swap-teknik)."
Min kod ser ut såhär, hur ska jag göra för att få talen i omvänd ordning?:
int[] hyllor = new int[10];
int random = (int)((Math.random()*999)+100);
hyllor[0] = random;
hyllor[1] = (int)((Math.random()*999)+100);
hyllor[2] = (int)((Math.random()*999)+100);
hyllor[3] = (int)((Math.random()*999)+100);
hyllor[4] = (int)((Math.random()*999)+100);
hyllor[5] = (int)((Math.random()*999)+100);
hyllor[6] = (int)((Math.random()*999)+100);
hyllor[7] = (int)((Math.random()*999)+100);
hyllor[8] = (int)((Math.random()*999)+100);
hyllor[9] = (int)((Math.random()*999)+100);
System.out.println("Talen är: " + (Arrays.toString(hyllor)));
Får du använda loopar?
Vad är swap-teknik?
Laguna skrev:Får du använda loopar?
Vad är swap-teknik?
Vår lärare kallade det för swap-teknik, tror vi får använda loopar. Jag är verkligen inte insatt i programmering, behöver all hjälp jag kan få!
Att fylla hyllor med tio nästan likadana kodrader är onödigt mycket skrivande. Om du behöver en array med tusen element blir det väldigt mycket skrivande (och läsande!). Det är lämpligare att använda en loop.
Svårt att förstå vad din lärare menar med "swap-teknik". Hen kanske menar den swap-metod som finns i klassen Collections som kan användas för att byta plats på två element i en lista. Kanske menar hen att listan ska sorteras med hjälp av bubble sort eller liknande (bättre) sorteringsalgoritm som byter plats på element i en lista.
Man kan skriva ut talen i omvänd ordning utan att ändra i arrayen, och eftersom det står så så skulle jag göra det. Man kan också ändra arrayen så att elementen är i omvänd ordning och sedan skriva ut hela arrayen med println och toString. Då kan man t.ex. byta plats på två element i taget, antingen med nån inbyggd metod, som Lindehaven föreslog, eller själv, med hjälp av en temporärvariabel (det kanske är det som menas med swap-teknik). Här byter jag plats på två av dem:
int tmp;
tmp = hyllor[0];
hyllor[0] = hyllor[9];
hyllor[9] = tmp;