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 tema
Cloud & AI
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.
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