03. oktober 2002 - 12:07Der er
6 kommentarer og 1 løsning
Array-problem
Jeg har et program som skal slå 4 terninger, lægge disse sammen og derefter trække den mindste fra. Dette skal ske 6 gange og hvert resultat skal lægges ind på en plads i arrayet "Stats". Mit problem er at alle pladserne i arrayet får samme resultat, nemlig det første som er blevet slået og de fem andre resultater bruges ikke. Hvad kan jeg tilføje/ændre for at få de 6 forskellige resultater ind på 6 forskellige pladser i arrayet?
Min kode: import java.math.*; import cs1.Keyboard; public class Stats { private static int terning1=1; private static int terning2=1; private static int terning3=1; private static int terning4=1; private static int mindst; static int Stats[] = new int[6];
public static void main (String[] args) { char valg;
for(int i=0;i<=5;i++) { slaa(); sorter();
if (i==5) { udskriv(); System.out.println("Vil du slå igen? j/n"); valg=Keyboard.readChar(); if (valg=='j') i=0; } } }
public static void slaa() { terning1=(int)(Math.random()*6+1); terning2=(int)(Math.random()*6+1); terning3=(int)(Math.random()*6+1); terning4=(int)(Math.random()*6+1); }
public static void sorter() { for (int a=0; a<=5; a++) { mindst=terning1; if (terning1<mindst) mindst=terning1; if (terning2<mindst) mindst=terning2; if (terning3<mindst) mindst=terning3; if (terning4<mindst) mindst=terning4; Stats[a]=(terning1+terning2+terning3+terning4)- mindst; } }
public static void udskriv() { for (int indeks = 0; indeks <= Stats.length-1; indeks++) System.out.println("Stat:"+ Stats[indeks] ); } }
I din sorter() metode løber du igennem terningerne 5 gange, og sætter stats[] med det samme.
Din sorter skal jo kun udregne en værdi, men få sorter() til at returnere resultatet, og så sætte stats[] i din main ud fra den løkke du kører der uden
public static void sorter() { for (int a=0; a<=5; a++) { slaa(); // få nogen nye terningkast at sortere. mindst=terning1; // if (terning1<mindst) // overflødig. vi VED mindst == terning1 her // mindst=terning1; if (terning2<mindst) mindst=terning2; // indrykninger, indrykninger, indrykninger. if (terning3<mindst) mindst=terning3; if (terning4<mindst) mindst=terning4; Stats[a]=(terning1+terning2+terning3+terning4) - mindst; // mindst lignede en ny sætning når den stod sådan. } }
Hvis jeg indsætter "slaa();" i sorter bliver der slået en god del over 6 gange, men ellers virker det. Hvad kan jeg så gøre for at den kun slår 6 gange (har fjernet slaa(); fra main)
men enig med disky sorter skal kun håndtere een sortering:
forløkken i main: for(int i=0;i<=5;i++) { slaa(); sorter(i); // fortæl sorter hvilken celle denne gang.
if (i==5) { udskriv(); System.out.println("Vil du slå igen? j/n"); valg=Keyboard.readChar(); if (valg=='j') i=-1; // der incrementeres til 0 ved løkkeslut. } }
funktionen sorter public static void sorter( int a ) { // slaa(); // fder blev slået i main. mindst=terning1; if (terning2<mindst) mindst=terning2; if (terning3<mindst) mindst=terning3; if (terning4<mindst) mindst=terning4; Stats[a]=(terning1+terning2+terning3+terning4) - mindst; }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.