2016-11-29 2 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

이벤트가 실제로 저장되는 위치가 확실하지 않습니다. 그 배열을 marks 배열에 추가하지만 addActionPerformed 메서드에 대해 로컬이고 완료되면 손실됩니다.

게시 한 코드만으로는 말하기 어렵지만 수업에서 전역 개체를 만들려고 할 수 있습니다.

+0

제 arraylist를 외부로 이동시키면서 글로벌하게 만들었지 만, 아무 것도 없습니다. –

+0

전체 수업을 게시 할 수 있습니까? – nonickleft4me