Я создаю программу, которая принимает входной файл, анализирует эту информацию и строит графический калькулятор на основе этой информации.В настоящее время программа работает хорошо, за исключением случаев, когда я реализую ActionListener для кнопок, которые должны установить текстовое поле в значение метода getText () кнопок.
Я пробовал несколько различных конструкций цикла, используя for и while,но все они, которые я реализовал, не нашли, где i или счетчик равен синтаксическому анализу int из numPad.getText () или вернул 0 для всех кнопок.
Проблема, с которой я столкнулся при тестированииявляется то, что переменная я никогда не соответствует NumPoint.Логически мой подход состоит в уменьшении i, чтобы цикл продолжал искать совпадения, но никогда не делает этого.Тестовые операторы вывода бесконечного цикла «-1» для i и «7» для numPoint.Как примечание, массив numPad находится не в порядке, но вместо этого элементы выглядят следующим образом: {7, 8, 9, 4, 5, 6, 1, 2, 3, 0}.
Я понимаю, что этоцикл не может быть логически правильным, но мне трудно найти решение, которое работает.Я хочу избежать жесткого кодирования операторов if (например, i == Integer(parseInt.numPad[0].getText()
), которые будут работать.
Это цикл, который создает новые кнопки и добавляет их в массив, устанавливает текст на основе списка, созданного иззначения входного файла и добавляет ActionListener.
for (int i = 0; i < run.buttons.size(); i++) {
numPad[i] = new JButton();
numPad[i].setText(run.buttons.get(i));
numPad[i].addActionListener(new ButtonActionListener());
panel1.add(numPad[i]);
}
Это самая последняя попытка создания цикла, который должен выполнять присваивание.
public static class ButtonActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
int i;
int numPoint;
for (i = 0; i < numPad.length; i++) {
numPoint = Integer.parseInt(numPad[i].getText());
if (i == numPoint) {
//Match, assign
System.out.println("works");
break;
} else {
//Decrement and continue
i--;
System.out.println("test statement" + i + " " + numPoint);
continue;
}
}
}
}