Я работаю над некоторой начинающейся логикой Java, и я не уверен, почему это не работает. Вот метод, который я сделал:
private void printSubclassBoxes(){
int coordinateX = ((getWidth() - BOX_WIDTH) /4);
for ( int i = 0; i < 3; i++){
double coordinateY = (getHeight() / 2);
GRect classBox = new GRect (coordinateX, coordinateY, BOX_WIDTH, BOX_HEIGHT);
GLabel classLabel = new GLabel ("Program");
double labelCoordinateX = (coordinateX + ((classBox.getWidth() / 2) - (classLabel.getWidth() / 2)));
double labelCoordinateY = (coordinateY + ((classBox.getHeight() / 2) + (classLabel.getAscent() / 2)));
add(classBox);
add(classLabel, labelCoordinateX, labelCoordinateY);
if (i == 1){
coordinateX = (((getWidth() - BOX_WIDTH) /4) * 2);
}
if (i == 2){
coordinateX = (((getWidth() - BOX_WIDTH) /4) * 3);
}
}
}
Теперь я уверен, что, возможно, есть лучшие способы сделать это, но, пожалуйста, мне это сейчас не интересно (я пытаюсь учиться, не обманывая ответы). Все, что я хочу знать, - это почему два последних символа не работают так, как мне кажется.
Для простоты, скажем,
100 = ((getWidth() - BOX_WIDTH)
int coordinateX = 25;
Насколько я понимаю, int i
сначала прибегает к этому оператору if и добавляет 25 + 25, а затем координата X = 50.
затем в следующий раз в цикле i = 2, так что координата X = 75.
Это то, что я ожидаю, но это не так. Я, кажется, печатаю первые две коробки прямо друг на друга, а затем третий движется 25.
Спасибо за вашу помощь, ребята. Теперь, когда я разобрался с этой петлей, я пошел дальше и решил ее по-другому. В итоге я присвоил координату X другой переменной и добавил ее в конец:
int coordinateX = ((getWidth() - BOX_WIDTH) /4);
int otherCoordinateX = coordinateX;
for ( int i = 0; i < 3; i++){
double coordinateY = (getHeight() / 2);
GRect classBox = new GRect (coordinateX, coordinateY, BOX_WIDTH, BOX_HEIGHT);
GLabel classLabel = new GLabel ("Program");
double labelCoordinateX = (coordinateX + ((classBox.getWidth() / 2) - (classLabel.getWidth() / 2)));
double labelCoordinateY = (coordinateY + ((classBox.getHeight() / 2) + (classLabel.getAscent() / 2)));
add(classBox);
add(classLabel, labelCoordinateX, labelCoordinateY);
coordinateX = otherCoordinateX + coordinateX;
}