2016-11-02 2 views
1

У меня возникли проблемы с выяснением того, как удалить 0 в этой таблице. Я попытался найти его в Интернете и не имел большого успеха, выясняя его таким образом (возможно, не искал его правильно). Я пытаюсь получить рисунок # 1, чтобы выглядеть как рисунок # 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, x*y к (x+1), (y+1), (x+1)*(y+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 петли на одном вместо нуля. Кроме того, ваш внешний контур должен иметь условие x <= 10, если вы хотите, чтобы фигура включала квадрат с надписью «10».

Затем измените следующие строки:

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

к:

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

Я попытался это, и это не синее пространство, где они когда-то были, даже при настройке панели. – Aramza

+0

см. Мой обновленный ответ – JavaTheNutt