2016-11-29 5 views
1

Я новичок в JAVA. Это то, что я должен сделать:
Пользователь вводит столько знаков, сколько хочет, записывая номер и нажимая , добавьте кнопку, делая это снова и снова, и все эти метки добавляются в arraylist. После этого он нажимает кнопку сортировки , и все марки сортируются и отображаются.
Это то, что у меня есть:Получение ввода непосредственно в ArrayList

ArrayList <Integer> marks=new ArrayList(); 
private void addActionPerformed(java.awt.event.ActionEvent evt) {         
    marks.add(Integer.parseInt(marksinput.getText())); 
    Collections.addAll(marks); 
     }         

     private void sortActionPerformed(java.awt.event.ActionEvent evt) {          
    ArrayList <Integer> marks=new ArrayList(); 
    marks.add(Integer.parseInt(marksinput.getText())); 
    Collections.addAll(marks); 
    Collections.sort(marks); 
    marksoutput.setText(marks + "\n"); 
    } 

Проблема я имею не отображает все номера, я добавил прежде. Он отображает только последний номер. Любая помощь приветствуется и благодарим вас заранее!

ответ

1

Вам необходимо нажать вверх по списку marks на уровне класса. Помните, что переменные, созданные внутри метода, имеют только область методов.

//Move it outside of method at class level 
ArrayList <Integer> marks=new ArrayList(); 
private void addActionPerformed(java.awt.event.ActionEvent evt) { 
{         
//Push the latest value into marks list, it will already contain all previous entries as we are not re initializing it.  
marks.add(Integer.parseInt(marksinput.getText())); 
} 



private void sortActionPerformed(java.awt.event.ActionEvent evt) {        
    Collections.sort(marks); 
    marksoutput.setText(marks + "\n"); 
    } 
+0

Благодарим вас за ответ, но я получаю тот же результат. И что вы подразумеваете под названием «Нажать последнее значение в список меток»? Спасибо –

+0

Вы изменили свой метод sortActionPerformed() в соответствии с предложением выше? – Manish

+0

да, я изменил свою кнопку сортировки –

0

Я не уверен, где события фактически сохранены; вы добавляете их в массив меток, но это локально для метода addActionPerformed и теряется после завершения.

Сложно сказать только с кодом, который вы опубликовали, но, возможно, вы можете попытаться сделать отметки глобальным объектом в своем классе.

+0

Я сделал мой arraylist глобальным, переместив его на улицу, но все равно ничего –

+0

вы можете опубликовать все классы? – nonickleft4me