05. oktober 2008 - 11:21
Der er
11 kommentarer og 1 løsning
Hjælp til nested loop
Jeg skal lave en for loop, der når der bliver indtastet en værdi, angiver hvor mange stjerner ( * ) der skal være på en linie. Fejlen ligger et sted ved for-loopet, men jeg er ikke selv i stand til lige at gennemskue den. Nogle der kan hjælpe? Hilsen Michael import java.util.Scanner; public class AS51 { /** * Author Michael Lunde */ public static void main(String[] args) { int width=0; Scanner keyboard = new Scanner(System.in); System.out.println("Please enter an integer greater than zero."); row = keyboard.nextInt(); System.out.println(); for (int row > 0) { row++; width += 1; for (int column = 1; column<=width; column++) System.out.print("*"); System.out.println(); } } }
Annonceindlæg fra DE-CIX
05. oktober 2008 - 13:50
#1
ja dit problem består i at du ikke giver dit for loop nok paramtere, et for-loop forventer 3 paramtere, 1. sættes en værdi, 2. er dit conditional statement, og 3. er "gør det her efter gennemløb" eksempel: for(int i = 0; i > 0; i++) { // gør noget } hvis du insistere på at bruge et for-loop kan din kode vist omskrives til: for(;row > 0;row++) { width += 1; for (int column = 1; column<=width; column++) System.out.print("*"); System.out.println(); }
05. oktober 2008 - 17:54
#2
Det bunder som ovenstående i at du laver din første for lykke forkert. Du kan bare udskifte for med while så spiller det. for (int row > 0) { row++; width += 1; for (int column = 1; column<=width; column++) System.out.print("*"); System.out.println(); } Udskiftes med: while(row > 0) { row++; width += 1; for (int column = 1; column<=width; column++) System.out.print("*"); System.out.println(); }
05. oktober 2008 - 18:27
#3
Jeg tror mest på for løkken. while(row > 0) { row++; ... } vil køre forholdsvis længe ...
05. oktober 2008 - 22:34
#4
Tak for hjælpen. Den kører dog bare uendeligt. Den skal helst kun vise det antal man taster ind.
07. oktober 2008 - 04:55
#5
Nogle der kan hjælpe med det?
07. oktober 2008 - 19:36
#6
Hvis du bare vil udskrive et antal stjerner der svarer til det indtastede tal, kan du gøre det sådan: public static void main(String[] args) { Scanner keyboard = new Scanner(System.in); System.out.println("Please enter an integer greater than zero."); row = keyboard.nextInt(); System.out.println(); for (int i = 0; i < row; i++ ) { System.out.print("*"); } System.out.println(); }
07. oktober 2008 - 19:44
#7
- og hvis du vil printe et antal linier der svarer til det indtastede tal med antal stjerner der svarer til linienummeret, kan du gøre sådan: public static void main(String[] args) { Scanner keyboard = new Scanner(System.in); System.out.println("Please enter an integer greater than zero."); row = keyboard.nextInt(); System.out.println(); for (int i = 0; i < row; i++ ) { for(int j = 0; j <= i; j++ ) { System.out.print("*"); } System.out.println(); } }
07. oktober 2008 - 21:37
#8
Tusinde tak. I kunne vel ikke hjælpe med at fortælle, hvordan jeg får den til at afbryde programmet, hvis man indtaster 'exit' i stedet for et tal?
07. oktober 2008 - 23:08
#9
Følgende antager at input enten er "exit" eller et heltal: public static void main(String[] args) { Scanner keyboard = new Scanner(System.in); System.out.println("Please enter an integer greater than zero."); String input = keyboard.nextLine(); if( input.equals("exit") ) return; row = Integer.parseInt(input); System.out.println(); for (int i = 0; i < row; i++ ) { for(int j = 0; j <= i; j++ ) { System.out.print("*"); } System.out.println(); } }
07. oktober 2008 - 23:20
#10
Mange mange tak :D
25. juli 2010 - 07:18
#11
Tråd slut
25. juli 2010 - 15:40
#12
Og du tog selv point fordi?
Kurser inden for grundlæggende programmering