2016-11-02 3 views
1

この表の0を取り除く方法がわかりません。私はそれをオンラインで探してみましたが、それを見つけ出すことはほとんど成功していませんでした。私はFigure#1をいくつかの文体の変更以外にFigure#2のように見せようとしています。Java:乗算表を描画するためのループ・インクリメントの開始

ご協力いただきありがとうございます。

コード:(http://www.buildingjavaprograms.com/DrawingPanel.java)描画パネルは

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 
      } 
     } 
    } 
} 

図#1を使用します:

Figure #1

図#2:あなたはほぼ完了している

Figure #2

答えて

2

- あなたが必要なのは 、x*y(y+1)(x+1)に、yxから示される内容(x+1)*(y+1)を変更し、1行分のパネルの高さを減少させる:

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 
    } 
} 

コードの残りの部分(すなわち、 ...部分)は同じままです。

1

質問を正しく理解している場合は、一番上の行と左の列を削除しますか?その場合は、forループを0ではなく1で開始してください。また、数字に '10'と書かれた四角形を含める場合は、外側ループの状態はx <= 10である必要があります。私はそれを試みたし、それは彼らがかつての青スペースなかった、パネルを調整しても

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

:に

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

その後の行を変更します。 – Aramza

+0

私の更新された回答を参照してください – JavaTheNutt

関連する問題