2016-10-04 4 views
0

숫자의 사용자 입력을 허용 한 다음 ArrayList에 추가 한 다음 여러 가지 방법으로 데이터를 조작해야하는 프로그램을 만들어야합니다. 숫자가 0보다 크거나 같아야합니다. 사용자 입력을 ArrayList에 추가하는 데 문제가 있습니다. try 및 catch 문을 사용하면 프로그램이 중단되는 것을 막을 수 있지만 ArrayList에 아무 것도 추가 할 수 없습니다. 내가 추가 과정에서 잘못하고있는거야? 당신은 다음과 같은 유형의 NumberFormatException 던질 것이다 Integer.parseInt(valueInput.getText())를 호출하기 전에 null (valueInput.setText(null) 포함)에 valueInput의 텍스트를 설정하기 때문입니다Java에서 배열에 정수 추가

import java.util.ArrayList; 
import java.util.Collections; 

public class SumElements extends javax.swing.JFrame { 
ArrayList <Integer> values = new ArrayList(); 

...

private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {           
    try 
    { 

     //clear outputArea 
     outputArea.setText(null); 
     valueInput.setText(null); 
     outputLabel.setText(null); 

     //declare variables 
     int value = Integer.parseInt(valueInput.getText()); 

     //validate input 
     if (value >= 0){ 
      //add item to array 
      values.add(value); 

      //display values 
      Collections.sort(values); 
      for (int i = 0; i < values.size(); i++) 
      { 
       outputArea.setText(outputArea.getText() + values.get(i) + "\n"); 
      } 
     } 
    } 
    //set default 
    catch (NumberFormatException a) 
    { 
    outputLabel.setText("Please input a valid number."); 
    } 
}     
+2

당신은 먼저'valueInput'의 텍스트를'null'로 설정 한 다음 그것을 읽습니다 - 당신은 결과로 무엇을 기대 했습니까? – UnholySheep

답변

5

: 여기 내 코드입니다 :

Exception in thread "main" java.lang.NumberFormatException: null 
    at java.lang.Integer.parseInt(Integer.java:542) 
    at java.lang.Integer.parseInt(Integer.java:615) 

따라서 간단히 줄을 제거하십시오. valueInput.setText(null);

0

숫자를 나타내는 문자열 만 구문 분석 할 수 있습니다. null을 가리키는 String 변수는 확실히 숫자를 나타내지 않습니다. 이 방법으로 코드를 수정하는 것이 좋습니다.

//declare variables 
    int value = Integer.parseInt(valueInput.getText()); 

    //clear outputArea 
    valueInput.setText(""); 
    outputLabel.setText(""); 

    //validate input 
    if (value >= 0){ 
     //add item to array 
     values.add(value); 

     //display values 
     Collections.sort(values); 
     for (int i = 0; i < values.size(); i++) { 
      outputArea.setText(outputArea.getText() + values.get(i) + "\n"); 
     } 
0

입력을 구문 분석하고 변수에 저장 한 후에는 // 출력 영역을 지우십시오!