#java #arrays #swing #data-structures
#java #массивы #swing #структуры данных
Вопрос:
Я пытаюсь найти способ выбрать, что хранит массив, в зависимости от того, какую кнопку пользователь нажимает в графическом интерфейсе.
Очевидно, что это не будет компилироваться из-за того, что имя переменной будет одинаковым.
Вычисления выполняются вне цикла, но используют «значения». Я просто хочу, чтобы пользователь мог определять, какие значения установлены в массиве, на основе того, какую кнопку они нажимают. Очевидная проблема заключается в невозможности использовать имя «значения» дважды, и именно здесь у меня возникает проблема, поскольку у меня есть цикл for, для которого требуется переменная «значения», и я не хочу повторно добавлять код несколько раз для каждого набора данных, когда больше всеговероятно, простое обходное решение, которое я в настоящее время не вижу.
Ответ №1:
Просто извлеките объявление:
double[] Xvalues = null;
if (e.getSource() == X1btn) {
Xvalues = new double[]{2001,350,799,1004};
}
else if (e.getSource() == X2btn) {
Xvalues = new double[]{5,62,28,500};
}
Комментарии:
1. Идеальный ответ. Удаление объявления сработало как шарм. Спасибо!
Ответ №2:
Лучшим подходом было бы создать подкласс JButton
и связать набор значений с каждым экземпляром. Чтобы получить значения кнопки, включите средство доступа.
Пример
public final class JArrayButton extends JButton{
private final double[] values;
public JArrayButton(double[] values){
this.values = values;
}
// ... other stuff (e.g. constructors)
public final double[] getValues(){
return values;
}
}
Ответ №3:
Что, если вы создадите массив вне цикла. double Xvalues[] = new Xvalues[5]; // или любой другой размер, который вы хотите
а затем используйте оператор if/else
if (e.getSource() == X1btn) {
Xvalues ={2001,350,799,1004};
} else if (e.getSource() == X2btn) {
Xvalues={5,62,28,500};
}