Oefening JAVA raster

Status
Niet open voor verdere reacties.

gast0137

Gebruiker
Lid geworden
23 apr 2009
Berichten
72
Hey beste Java specialisten ,

Ik heb een probleem bij het maken van een simpel Raster die met een for'lus moet gemaakt worden.
ik zal de opdracht even hier neerschrijven:

Druk met behulp van de hoofdletter X een patroon af van rechthoekige vakjes. Op elke 5e verticale lijn moet het programma een horizontale rij X'en zetten en een verticale kolom van X'en moet er komen op elke 10de positie van een regel. Druk op die manier rechthoeken af van 4 bij 4 af.


Kan iemand my verbeteren wat ik hier fout doe ? :

Code:
// Tryout Raster - Loops P25 
// Author : Flexx

public class TO_RasterA {
  public static void main(String[]arg) {
 
    for(char i='X';i<=5;i++){
      System.out.print(i);
      for(char j='X';j<=11;j++) {
	System.out.println(j);
      }
    }
  }
}
 
Laatst bewerkt:
Hoi,

Ik ben zelf Java beginner en kan dus misschien niet zo veel helpen.
Eerst wat vraagjes over je code.

Wat is de uitkomst van 'x' +1? En waarom print jij deze af?
Zou je niet beter een array maken en deze meerdere keren afdrukken?
 
Als ik het goed begrijp moet het een rechthoek ongeveer worden zoals deze:

Code:
XXXXXXXXXX
X        X
X        X
X        X
X        X
XXXXXXXXXX


Code:
for(char i='X';i<=5;i++)
Bij deze gaat het fout bij de char i = 'X'
Voor het doorlopen van een array kan je wel een char gebruiken, maar er wordt normaliter gebruik gemaakt van een int. Het komt er dan zo uit te zien:
Code:
for(int i = 0;i <= 5; i++)
Dan voert hij 6 loops uit. 0, 1, 2, 3, 4, 5

Als je een char gebruikt en daarna een i++ dan zal hij de int waarde van de char opvragen en daar 1 bij optellen. Dus naar het eenmaal doorlopen van de loop zal hij hebben:

Code:
char i = 'X'
i++;
// nu is i met 1 opgehoogd. en 'X' + 1 = 'Y'
 
Als ik het goed begrijp moet het een rechthoek ongeveer worden zoals deze:

Code:
XXXXXXXXXX
X        X
X        X
X        X
X        X
XXXXXXXXXX


Code:
for(char i='X';i<=5;i++)
Bij deze gaat het fout bij de char i = 'X'
Voor het doorlopen van een array kan je wel een char gebruiken, maar er wordt normaliter gebruik gemaakt van een int. Het komt er dan zo uit te zien:
Code:
for(int i = 0;i <= 5; i++)
Dan voert hij 6 loops uit. 0, 1, 2, 3, 4, 5

Als je een char gebruikt en daarna een i++ dan zal hij de int waarde van de char opvragen en daar 1 bij optellen. Dus naar het eenmaal doorlopen van de loop zal hij hebben:

Code:
char i = 'X'
i++;
// nu is i met 1 opgehoogd. en 'X' + 1 = 'Y'

Als ik het goed begrijp , moet ik toch eerst 'i' declareren als char : char i ='X'; ?
 
Dat was wat er mis was.
i word reeds gedeclareerd als int
int i = 0
Hij kan niets optellen bij 'x'. Dus dan werkt je for lus niet.
 
Nee, dat hoeft niet.
Wat je kan doen is het volgende:

Code:
public class TO_RasterA {

  char printer = 'X';

  public static void main(String[]arg) {
 
    for(int i=0;i<=5;i++){
      for(int j=0;j<=10;j++) {
        if(i % 5 == 0 && j % 10 == 0){
          System.out.println(printer);
        }
      }
    }
  }
}

Nu wordt er X geprint als i=5 en j=10
Nu zal je het verder uit moeten werken zodat hij volledige vierkanten print.

De % staat voor modulus
Deze zet het restgetal in de variabele.
25 % 8 = 1
omdat 25 / 8 = 3 ... 3 * 8 = 24 .. 25 - 24 = 1
 
Vakjes

Je wilt je vakjes gaan maken door hoofdletter x als kader uit te printen?
Je programma zou dan kunnen volstaan met twee print statements in een geneste for lus te plaatsen.
Ik hoop dat ik je zo in de goede richting heb gebracht.
Als je wil wil ik de code er wel voor je opzetten.
 
Dat was wat er mis was.
i word reeds gedeclareerd als int
int i = 0
Hij kan niets optellen bij 'x'. Dus dan werkt je for lus niet.
Gewoon even melden dat er wel kan opgeteld worden bij een char en dit om het volgende te kunnen doen
Code:
public class CharTest {

    public static void main(String[] args){
        char letter = 'a';
        String output = "";
        for (int i=0; i<26; i++) {
            output = output+(char)(letter+i)+"; ";
        }
        System.out.println(output);
    }

}
Voor diegenen die het niet wisten, probeer maar...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan