03. januar 2001 - 00:01Der er
11 kommentarer og 1 løsning
hvad er fejlen?
Jeg kan ikke finde fejlen. I den første kode...er det metoden sum der er noget galt med....hvis summen skal være 230 udskriver den 2300 eller hvis den skal være 456 udskriver den 4560...altid en 0 for meget. Her er koden: import java.util.Random;
public class Opgave2 { public static void main(String[] args) { Random generator = new Random(); final int COLUMN_WIDTH = 10;
int[][] tabel = new int[10][8]; for (int i = 0; i < tabel.length; i++) for (int j = 0; j < tabel[i].length; j++) tabel[i][j] = generator.nextInt(100); printTable(tabel, COLUMN_WIDTH);
ConsoleReader console = new ConsoleReader(System.in);
System.out.println(\"Indtast nummeret på den række du vil summere:\"); int raekke = console.readInt() - 1;
System.out.println(sum(tabel, raekke));
}
public static int sum (int[][] table, int r) { int sum = 0; for (int i = 0; i < table.length; i++) for (int j = 0; j < table[i].length; j++)
sum = sum + table[r][j]; return sum; }
public static void printTable(int[][] table, int width) { for (int i = 0; i < table.length; i++) { for (int j = 0; j < table[i].length; j++) { System.out.print(format(table[i][j], width)); } System.out.println(); } }
public static String format(int n, int width) { String nstr = \"\" + n;
// pad with spaces
while (nstr.length() < width) nstr = \" \" + nstr;
return nstr; } }
Og i denne her...den skal udskrive et tal opløftet i første, anden osv potens... det virker fint med while og do-while løkken, men det går galt med for-løkken i stedet for 10, 100, 10000...udskriver den 10 110 110 1110.... forresten...der er også en fejl mere....i alle tre løkker...tager den et tal mere efter 10000...den skal helst tage den sidste tal inden 10000....Her er koden: public class Opgave22 { public static void main(String[] args) { ConsoleReader console = new ConsoleReader(System.in);
System.out.print(\"Indtast et tal: \"); int tal = console.readInt(); int oploeft = 1;
i din forløkke incementerer du i ( med i++ ) dine gennemløb gør derfor (tal = 10) 1*10 = 10 ; 10++ = 11 11*10 = 110 ; 110++ = 111 111*10 = 1110 ; osv. fjern i++ hvis du absolut vil lave det i en for løkke (det er ikke helt pænt at lave en for løkke som ikke er \"rigtig\" determinisktisk)
tak for det....*s* jeg har lavet det med alle tre løkker, da det står i opgaven...der er nogle øvelser jeg skal igennem før min eksamen på fredag..... og de der for-løkker synes jeg er lidt tricky... Kan man slet ikke gøre noget ved at den løber en gang for meget?
Du kan sætte opløft*tal < 10000 som betingelse i din løkke i stedet for.
gennemsnit kan fx gøres ved: public static void average (int[][] table) { int sum; for (int i = 0; i<table.length; i++) { sum=0; for (int j = 0; j<table[i].length; j++) sum += table[i][j];
System.out.println (\"Gennemsnit række \" + i + \": \" + sum/table[i].length); } }
og så pøj pøj med examen på fredag. Et gæt: Du studerer til datamatiker på lyngby. Så skal vi have samme opgave på fredag.
tak......ilm..\'ss* Men jeg læser i Vejle.....jeg er kun på første semester, vi har allerede eksamen efter første semester. Jeg går du fra du er på anden....*s*
Nej, jeg er på første semester, men tak, det var en ros at du troede jeg var på anden. Jeg gættede fordi vi har eksamen samme dag som lyngby, da vi er en underafdeling deraf (os Bornholmere).
du har i hvert fald mere styr på det end jeg har....jeg synes for-løkken noget af det mest forvirrende... jeg var heldig ved sidste eksamen og kom ikke op i noget med for-løkken og fik 10.....men nu må vi se hvordan det går denne gang. I har nok skriftlig eksamen i 5 timer...vores eksamen er lavet om til mundtlig i 1 time
Med et 10-tal bag sig går det vel ikke helt galt. En for-løkke kan du se som en deterministisk løkke (bliver kørt et bestemt antal gange)
for ( startværdi ; så længe at; tæl op eller ned )
så går det ikke helt galt. Det er dog langt fra det eneste den kan. Du kan skrive næsten hvad somhelst først og sidst. midterste skal være et bolsk udtryk. men det her går fx godt
Random generer = new Random(); int var = 0;
for (System.out.println (\"SOP i en for løkke\"); var != 25; var = generer.nextInt() % 30) System.out.println (var);
System.out.println (var);
som du ser bliver første statement kun kørt én gang. håber ikke jeg forvirrede dig med det sidste.
Vi er lidt \"heldigere\" med vores eksamen, vi har 6 timer.
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.