Permalänk
Medlem

Java, nästlade loopar

Hejsan!

Jag försöker lösa en uppgift. Eller tja, jag löste den innan jag läste så noga.
Uppgiften lyder:

En bank transporterar pengar med hjälp av bilar och dom placerar pengarna
på bilens golv i rader och kolumner. De vill att du skapar ett program som
grafiskt visar hur det kommer att se ut ifall de placerar pengarna i ett givet
antal rader och kolumner. Uppgiften är att skriva ett program som läser in två
värden, antalet rader och kolumner och därefter skriver ut en representation
av hur det skulle se ut. Se exemplet nedan för mer information.
Exempel:
3 rader och 7 kolumner
Utskrift:
XXXXXXX
XXXXXXX
XXXXXXX
Antalet rader och kolumner skall läsas in från tangentbordet och
representationen skall skrivas ut med hjälp av loopar.
Följande måste användas:
1. En Scanner
2. Två variabler (loop-variabler undantaget)
3. Nästlade loopar (en loop inuti en annan loop)

Jag löste detta genom

import java.util.Scanner; class Uppgift3{ public static void main(String[] args) { Scanner scan = new Scanner(System.in); int row, column; System.out.println("Hur många rader?"); row = scan.nextInt(); System.out.println("Hur kolumner?"); column = scan.nextInt(); for(int r=1; r<=row; r++) { System.out.print('X'); for(int c=1; c<=column; c++) { System.out.print('X'); } System.out.println(); } } }

Detta funkade ju fint, tills jag såg att det skulle vara nästlade loopar.
Jag har inga problem med nästlade loopar i sig, jag har bara lite svårt att komma på hur jag ska kunna använda det i denna uppgift.
Förslag någon?

Tack för hjälpen

Permalänk
Medlem

Dina loopar är redan nästlade

Permalänk
Medlem

for(int r=1; r<=row; r++) {
for(int r=1; r<=kolumn; r++) {
printa x kolumner
}
printa y rader
}

så din är redan nestlad. uppgiften är korrekt

Visa signatur

Min dator: Silent Base 600 | 1700X @ 3.9Ghz | MSI Gaming X 1080TI | RM750X | 512Gb M2 | 16Gb 3200mhz Ram | S34E790C @ 3440x1440
Tjejens dator: Define r4 | i5 3570k @ 4.2ghz | GTX Titan | 750w Supernova | 240gb SSD | 32gb ram
Citera/Tagga för svar!

Permalänk
Skrivet av JJ72:

Hejsan!

Jag försöker lösa en uppgift. Eller tja, jag löste den innan jag läste så noga.
Uppgiften lyder:

En bank transporterar pengar med hjälp av bilar och dom placerar pengarna
på bilens golv i rader och kolumner. De vill att du skapar ett program som
grafiskt visar hur det kommer att se ut ifall de placerar pengarna i ett givet
antal rader och kolumner. Uppgiften är att skriva ett program som läser in två
värden, antalet rader och kolumner och därefter skriver ut en representation
av hur det skulle se ut. Se exemplet nedan för mer information.
Exempel:
3 rader och 7 kolumner
Utskrift:
XXXXXXX
XXXXXXX
XXXXXXX
Antalet rader och kolumner skall läsas in från tangentbordet och
representationen skall skrivas ut med hjälp av loopar.
Följande måste användas:
1. En Scanner
2. Två variabler (loop-variabler undantaget)
3. Nästlade loopar (en loop inuti en annan loop)

Jag löste detta genom

import java.util.Scanner; class Uppgift3{ public static void main(String[] args) { Scanner scan = new Scanner(System.in); int row, column; System.out.println("Hur många rader?"); row = scan.nextInt(); System.out.println("Hur kolumner?"); column = scan.nextInt(); for(int r=1; r<=row; r++) { System.out.print('X'); for(int c=1; c<=column; c++) { System.out.print('X'); } System.out.println(); } } }

Detta funkade ju fint, tills jag såg att det skulle vara nästlade loopar.
Jag har inga problem med nästlade loopar i sig, jag har bara lite svårt att komma på hur jag ska kunna använda det i denna uppgift.
Förslag någon?

Tack för hjälpen

Looparna är redan nästlade, dock gör inte din utskrift vad du har tänkt dig. Fundera en gång till på vad du ska göra, och fundera på vad det är du egentligen gör just nu.

Visa signatur

Corsair Vengeance LPX 4x8GB DDR4 2666MHz CL16 | Intel Core i7 6700 3,4 GHz 8MB | MSI Z170A KRAIT GAMING | Corsair Force Series 3 120 GB | Seagate SSHD Desktop 2 TB 7200 RPM 3,5" | Creative Sound Blaster Z PCIe | Western Digital 500 GB | Samsung Writemaster | Corsair TX750 V2 750 W | EVGA GeForce GTX 970 4GB SSC ACX 2.0+| Fractal Design Define R5 (Svart)

Permalänk
Medlem

Jahaaaa...

Jag tänkte nåt i stil med...
if(görDitt){
}else{
if(görDatt)

Men det funkar alltså så här också

Jepp Gamergirl, jag ska kolla igenom det hela och se om jag kan få till det.

Tack så mycket för hjälpen. Det här sparade mig nog många timmars funderande. Haha

Permalänk
Legendarisk

@JJ72: Att loopar är nästlade innebär bara att de är placerade inuti varandra, och som de andra har påpekat är de redan det. Det blir dock lättare att läsa och arbeta med koden om du är noggrann med hur du formaterar den; det underlättar även om du är ensam med en liten uppgift, men ska du samarbeta med andra (eller dela kod för att få hjälp) så är det nödvändigt att hålla en konsekvent, läsbar stil. Kan tänka mig att din lärare har åsikter om att behöva läsa det också, kan du få poängavdrag för slarvig formatering? Fundera på varför dina indrag ser ut som de gör nu och börja med att skapa en god vana direkt.

for(int r=1; r<=row; r++) { System.out.print('X'); for(int c=1; c<=column; c++) { System.out.print('X'); } System.out.println(); } => for(int r=1; r<=row; r++) { System.out.print('X'); for(int c=1; c<=column; c++) { System.out.print('X'); } System.out.println(); }

Visa signatur

Abstractions all the way down.

Permalänk
Medlem

Ok, tack

och....jag ska akta gräsmattan. Haha

Permalänk

@JJ72:

Undantagshantering behövs oxå, tror jag Försök att inmata bokstav eller ngn annan symbol utan integer

public static void main(String[] args) () throws InputMismatchException { // din kod; try{ // alla scan.nextInt() här; } catch (InputMismatchException e){ //satser; }

Du kan använda while(true) with return variabelnNamn och continue i catch
Två loops, en för varje variabelns inmatning.

Permalänk
Keeper of Traditions
Skrivet av JJ72:

Jahaaaa...

Jag tänkte nåt i stil med...
if(görDitt){
}else{
if(görDatt)

Men det funkar alltså så här också

Kom bara ihåg att det där inte är en nästlad loop.

Visa signatur

|| Intel 8700K || Asus RTX 4070 TI Super TUF || Samsung 750 EVO 500GB & Kingston A2000 1TB & Samsung 960 EVO 250GB || Corsair RM 850x || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 || Thinkpad X220

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Permalänk
Medlem

Nä just det inte den biten