2016-10-04 7 views
0

Мне нужно создать программу, которая принимает ввод данных пользователем, а затем добавляет их в ArrayList, а затем манипулирует данными несколькими способами. Числа должны быть больше или равны 0. У меня возникла проблема с добавлением ввода пользователя в ArrayList, мои попытки try и catch останавливают программу от сбоев, но я не могу ничего добавить в ArrayList, может кто-нибудь сказать мне, что Я ошибаюсь в процессе добавления? Вот мой код:Добавление целых чисел в массив в 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

Это потому, что вы установили текст valueInput в nullvalueInput.setText(null)) перед вызовом Integer.parseInt(valueInput.getText()), который будет бросать NumberFormatException следующего типа:

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

Вы можете анализировать только те строки, которые представляют числа. Переменная String, указывающая на null, определенно не представляет число. То, что я хотел бы предложить, чтобы изменить код таким образом:

//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

Do // ясно outputArea после того как вы сделали разбор ввода и сохранения их в переменные!

Смежные вопросы