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 dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.