Я пытаюсь принять 5 чисел в текстовом поле от пользователя, чтобы отсортировать их с использованием разных методов (bubbleSort, mergeSort, quickSort). К сожалению, я продолжаю генерировать «java.lang.NullPointerException». Я немного огляделся, и самое близкое, что я мог найти к моей проблеме, - NumberFormatException when attempting to parse string as an integer, но это было просто из-за пустого пространства. Я забросил .trim() только для хорошей меры, но безрезультатно.Попытка parseInt из String throws «java.lang.NullPointerException»
public class SortWindow {
private JFrame frame;
private JTextField textFieldInput;
private String[] list;
private int[] numList;
private static JTextArea textAreaOutput;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
SortWindow window = new SortWindow();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public SortWindow() {
initialize();
}
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
//Buttons
JButton buttonBubble = new JButton("Bubble");
buttonBubble.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
textAreaOutput.setText("");
list = textFieldInput.getText().split(" ");
numList[0] = Integer.parseInt(list[0].trim());
for (int i = 0; i < list.length; i++){
numList[i] = Integer.parseInt(list[i]);
}
bubbleSort(numList);
}
});
buttonBubble.setBounds(12, 13, 115, 40);
frame.getContentPane().add(buttonBubble);
//Text Fields
textFieldInput = new JTextField(5);
textFieldInput.setBounds(177, 13, 243, 40);
frame.getContentPane().add(textFieldInput);
textFieldInput.setColumns(10);
textAreaOutput = new JTextArea();
textAreaOutput.setLineWrap(true);
textAreaOutput.setText("In the box above, enter 5 numbers separated by spaces.");
textAreaOutput.setEditable(false);
textAreaOutput.setBounds(177, 66, 243, 176);
frame.getContentPane().add(textAreaOutput);
}
список представляет собой массив строк, и когда я вхожу 1 2 3 4 5 (или любую другую комбинацию - я даже пытался просто введя одну цифру и посмотреть, что произошло с помощью моей второй линии, но он все еще бросил исключение) в textField в моем графическом интерфейсе, он хранит его правильно в массиве String, и я могу успешно распечатать отдельные строки в нем отлично, используя System.out.print(). Моя проблема возникает только тогда, когда я пытаюсь использовать любую из следующих четырех строк (я включил только вторую строку, чтобы убедиться, что в моем цикле for не было ничего плохого).
Я могу предоставить остальную часть своего кода, если нужно, но я решил, что начну с этого, так как я не могу придумать ничего, что могло бы повлиять на него.
EDIT: Добавлена намного большая часть моего класса в OP. Исключение в строке 60, а именно:
numList[0] = Integer.parseInt(list[0].trim());
EDIT2: В соответствии с просьбой, это то, что я дал.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at SortWindow$2.actionPerformed(SortWindow.java:60)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Не могли бы вы написать всю строку кода ошибки? В каком номере строки это происходит - это в 'numList [0] = Integer.parseInt (list [0] .trim());'? Это также помогло бы, если бы вы могли поделиться немного больше своего класса. –
Я подозреваю, что ваша проблема в том, что весь этот код закомментирован. –
numList - null. –