试图打印数组

时间:2013-11-10 17:09:14

标签: java arrays user-interface arraylist

我目前正在尝试从textArea获取用户输入,将其放入数组中,然后在textField中输出数组。我目前正在遇到nullPointerExeception。我猜这是因为我没有正确地从textArea收集输入并将其放入数组中。请帮忙。最终我将不得不使用Bubble,Merge和Quick sort对其进行排序,但我只是想确保我正在接受输入并将其正确放入数组中。请不要给我关于分类的答案。谢谢。

目前我正在使用的区域是冒泡排序JButton。

import java.awt.EventQueue;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;

public class Sorting {

private JFrame frame;
private JTextArea inputArea;
private JTextField outputArea;
List<String> list = new ArrayList<String>();
Scanner input = new Scanner(System.in);
int array[];
int inputNumber = 0;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Sorting window = new Sorting();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public Sorting() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame();
    frame.setBounds(100, 100, 450, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setTitle("Sorting");
    frame.getContentPane().setLayout(null);



    JButton bubbleButton = new JButton("Bubble Sort");
    bubbleButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            inputArea.getText();
            array[inputNumber] = input.nextInt();

            printArray(array);
        }

        private void printArray(int[] array) {
            int n = inputNumber;
            for(int i = 0; i < n; i++){
                outputArea.setText(array[i] + " ");
            }

        }
    });
    bubbleButton.setBounds(10, 211, 114, 23);
    frame.getContentPane().add(bubbleButton);

    JButton mergeButton = new JButton("Merge Sort");
    mergeButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

        }
    });
    mergeButton.setBounds(305, 211, 114, 23);
    frame.getContentPane().add(mergeButton);

    JButton quickButton = new JButton("Quick Sort");
    quickButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

        }
    });
    quickButton.setBounds(163, 211, 114, 23);
    frame.getContentPane().add(quickButton);

    inputArea = new JTextArea();
    inputArea.setBounds(10, 36, 414, 51);
    frame.getContentPane().add(inputArea);

    outputArea = new JTextField();
    outputArea.setEditable(false);
    outputArea.setBounds(10, 98, 414, 59);
    frame.getContentPane().add(outputArea);
    outputArea.setColumns(10);

    JLabel label = new JLabel("Please Enter 5 Numbers");
    label.setHorizontalAlignment(SwingConstants.CENTER);
    label.setBounds(10, 11, 414, 14);
    frame.getContentPane().add(label);


 }
}

目前,当我运行此程序并按下冒泡排序按钮时,它会冻结并且不会执行任何操作。

所以我把它添加到了我已更改的冒泡排序按钮区域。

 JButton bubbleButton = new JButton("Bubble Sort");
    bubbleButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            ArrayList<Integer> list = new ArrayList<Integer>();
            while (input.hasNext()) {
                list.add(input.nextInt());
            }

            for (int i = 0; i < 5; i++) {
                outputArea.setText(list.toString());
            }

        }

    });

目前仍然处于冻结状态,但我不确定它为什么会冻结。我需要做什么来从inputArea获取文本??

1 个答案:

答案 0 :(得分:0)

在尝试访问阵列之前,必须先初始化阵列。 Java中的数组作为对象处理,因此您必须在访问它之前声明:array= new int [arrayLength](arrayLength是您放在那里的变量)。