2016-11-02 1 views
1

Je n'arrive pas à trouver comment supprimer les 0 dans cette table. J'ai essayé de le rechercher en ligne et j'ai eu peu de succès à le comprendre de cette façon (probablement ne pas le chercher correctement). J'essaie de faire apparaître la figure 1 comme la figure 2 en plus de quelques changements stylistiques.Java: incrément de boucle de départ pour dessiner une table de multiplication

J'apprécierais toute aide.

Code: (http://www.buildingjavaprograms.com/DrawingPanel.java) Dessin Panneau Utilisé

import java.awt.*; 

public class IfGridFor { 
    public static void main(String[] args) { 
     DrawingPanel panel = new DrawingPanel(400, 520); 
     panel.setBackground(Color.blue); 
     Graphics g = panel.getGraphics(); 

     int sizeX = 40; 
     int sizeY = 40; 
     for (int x = 0; x < 10; x++) { 
      for (int y = 0; y <= 12; y++) {    
       int cornerX = x*sizeX; 
       int cornerY = y*sizeY; 

       if ((x + y) % 2 == 0) 
        g.setColor(Color.green); 
       else 
        g.setColor(Color.yellow); 

       g.fillRect(cornerX+1, cornerY+1, sizeX-2, sizeY-2); 
       g.setColor(Color.black); 
       g.drawString(x + " * " + y, cornerX + 5, cornerY + 15); // text is 
       g.drawString("= " + x * y, cornerX + 5, cornerY + 33); // offsets 
      } 
     } 
    } 
} 

Figure # 1:

Figure #1

Figure # 2:

Figure #2

Répondre

2

Vous avez presque fini - tout ce dont tu as besoin c'est changer ce qui sera diffusé à partir x, y, x*y à (x+1), (y+1), (x+1)*(y+1), et en réduisant la hauteur du panneau par une ligne:

DrawingPanel panel = new DrawingPanel(400, 480); // 12 rows, not 13 
... 
for (int x = 0; x < 10; x++) { 
    for (int y = 0; y < 12; y++) { // < instead of <= 
     ... 
     g.drawString((x+1) + " * " + (y+1), cornerX + 5, cornerY + 15); // text is 
     g.drawString("" + (x+1) * (y+1), cornerX + 5, cornerY + 33); // offsets 
    } 
} 

Le reste de votre code (à savoir les ... parties) restent les mêmes.

1

Si je comprends bien votre question, vous voulez supprimer la ligne du haut et la colonne de gauche? Si c'est le cas, commencez vos boucles for à une au lieu de zéro. Votre boucle externe doit également avoir la condition x <= 10 si vous voulez que le chiffre inclue le carré '10'.

changer ensuite les lignes:

int cornerX = x*sizeX; 
int cornerY = y*sizeY; 

à:

int cornerX = (x-1)*sizeX; 
int cornerY = (y-1)*sizeY; 
+0

J'ai essayé et ça n'a pas l'espace bleu où ils étaient autrefois, même lors du réglage du panneau. – Aramza

+0

voir ma réponse mise à jour – JavaTheNutt