由于int转换放置导致的错误

时间:2017-12-18 22:31:40

标签: java string-conversion

我缩小了它,以便从jtextfield到int的int转换是错误,但我不确定将它们放在哪里

   package demooo;

/*
 * GridBagLayoutDemo.java requires no other files.
 */
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
import javax.swing.text.DefaultCaret;

public class Demooo implements ActionListener {

    final static boolean shouldFill = true;
    final static boolean shouldWeightX = true;
    final static boolean RIGHT_TO_LEFT = false;
    private final static String newline = "\n";
    protected JTextField textField;
    protected JTextArea textArea;

    public static void addComponentsToPane(Container pane) {

        if (RIGHT_TO_LEFT) {

pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
        }

        /*test for team names */
        //String[] teamString = {};
        String[] reffString = {"bob", "fred", "jon", "ed", "killa"};
         JLabel label;
        JLabel labelA;
        JLabel labelH;
        JLabel labelA2;
        JLabel labelH2;
        JTextField text;
        int g = 0 ;
        JButton next;
        JButton button1;
        JButton button2;
        JLabel blank;
        JLabel Head;
        JComboBox comboH;
        JComboBox comboA;
        JComboBox comboReff;
        String winner;
        Connection con = null;
        Statement st = null;
        ResultSet rs = null;
       /* int h = Integer.parseInt(homegoal.getText());
        int a = Integer.parseInt(awaygoal.getText());
        int h2 = Integer.parseInt(homegoal2.getText());
        int a2 = Integer.parseInt(awaygoal2.getText());*/

        pane.setLayout(new GridBagLayout());

        GridBagConstraints c = new GridBagConstraints();
        if (shouldFill) {
            //natural height, maximum width
            c.fill = GridBagConstraints.HORIZONTAL;
        }
        /*select home team*/

        labelH = new JLabel("Home Team");
        if (shouldWeightX) {
            c.weightx = 0.5;
        }
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 0;
        c.gridy = 0;
        pane.add(labelH, c);

        comboH = new JComboBox(/*teamString*/);
        c.fill = GridBagConstraints.HORIZONTAL;
        c.weightx = 1;
        c.gridx = 0;
        c.gridy = 1;
        pane.add(comboH, c);
        /* to add blank space between teams*/

 /*cant get right yet but will try */
 /*select away team*/
        labelA = new JLabel("Away Team");
        if (shouldWeightX) {
            c.weightx = 0.5;
        }
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 7;
        c.gridy = 0;
        pane.add(labelA, c);

        comboA = new JComboBox(/*teamString*/);
        c.fill = GridBagConstraints.HORIZONTAL;
        c.weightx = 1;
        c.gridx = 7;
        c.gridy = 1;
        pane.add(comboA, c);

        /*Team 1 home*/
        Head = new JLabel("Home Game Score", SwingConstants.CENTER);
        c.fill = GridBagConstraints.HORIZONTAL;
        c.ipady = 20;      //make this component tall
        c.weightx = 0.0;
        c.gridwidth = 3;
        c.gridx = 0;
        c.gridy = 3;
        pane.add(Head, c);
        Head.setFont(new Font("Serif", Font.BOLD, 18));

        /*enter score for home game*/
        labelH2 = new JLabel("Home Team Goals");
        if (shouldWeightX) {
            c.weightx = 0.5;
        }
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 0;
        c.gridy = 4;
        pane.add(labelH2, c);

        JTextField homegoal = new JTextField(2);
        if (shouldWeightX) {
            c.weightx = 0.5;
        }
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 0;
        c.gridy = 5;
        pane.add(homegoal, c);
int h = Integer.parseInt(homegoal.getText());
        /*ref section*/
        label = new JLabel("Referee");
        if (shouldWeightX) {
            c.weightx = 0.5;
        }
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 3;
        c.gridy = 4;
        pane.add(label, c);

        comboReff = new JComboBox(reffString);
        c.fill = GridBagConstraints.HORIZONTAL;
        c.weightx = 1;
        c.gridx = 3;
        c.gridy = 5;
        pane.add(comboReff, c);

        /*other teams goals*/
        label = new JLabel("Away Team Goals");
        if (shouldWeightX) {
            c.weightx = 0.5;
        }
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 7;
        c.gridy = 4;
        pane.add(label, c);

        JTextField awaygoal = new JTextField(2);
        if (shouldWeightX) {
            c.weightx = 0.5;
        }
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 7;
        c.gridy = 5;
        pane.add(awaygoal, c);
        int a = Integer.parseInt(awaygoal.getText());


        /*team 2 is home team*/
        Head = new JLabel("Away Game Score", SwingConstants.CENTER);
        c.fill = GridBagConstraints.HORIZONTAL;
        c.ipady = 20;      //make this component tall
        c.weightx = 0.0;
        c.gridwidth = 3;
        c.gridx = 0;
        c.gridy = 6;
        pane.add(Head, c);
        Head.setFont(new Font("Serif", Font.BOLD, 18));

        label = new JLabel("Home Team Goals");
        if (shouldWeightX) {
            c.weightx = 0.5;
        }
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 0;
        c.gridy = 8;
        pane.add(label, c);

        JTextField homegoal2 = new JTextField(2);
        if (shouldWeightX) {
            c.weightx = 0.5;
        }
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 0;
        c.gridy = 9;
        pane.add(homegoal2, c);
        int h2 = Integer.parseInt(homegoal2.getText());
        /*reff */
        label = new JLabel("Referee");
        if (shouldWeightX) {
            c.weightx = 0.5;
        }
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 3;
        c.gridy = 8;
        pane.add(label, c);

        comboReff = new JComboBox(reffString);
        c.fill = GridBagConstraints.HORIZONTAL;
        c.weightx = 1;
        c.gridx = 3;
        c.gridy = 9;
        pane.add(comboReff, c);


        /*next teams goals*/
        label = new JLabel("Away Team Goals");
        if (shouldWeightX) {
            c.weightx = 0.5;
        }
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 7;
        c.gridy = 8;
        pane.add(label, c);

        JTextField awaygoal2 = new JTextField(2);
        if (shouldWeightX) {
            c.weightx = 0.5;
        }
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridx = 7;
        c.gridy = 9;
        pane.add(awaygoal2, c);

        int a2 = Integer.parseInt(awaygoal2.getText());


        /*match set complete*/
         button1 = new JButton("The winner of this set of matches was");
        c.fill = GridBagConstraints.HORIZONTAL;
        c.ipady = 20;      //make this component tall
        c.weightx = 2;
        c.gridwidth = 8;
        c.gridx = 0;
        c.gridy = 10;
        pane.add(button1, c);
        button1.addActionListener(new ActionListener() {

                        public void actionPerformed(int g) {
                        if (h>a){
                        g =+1;
                        }else if (a>h){
                        g =-1;}
                        else{
                        g = g;}
                        }

            @Override
            public void actionPerformed(ActionEvent ae) {
                throw new UnsupportedOperationException("Not supported 
yet."); //To change body of generated methods, choose Tools | Templates.
            }
        });

        if (g > 0){
        winner = "home";
        }
        else if (g < 0){
        winner = "away";}
        else {
        winner = "Draw";}

        label = new JLabel (winner);
        c.fill = GridBagConstraints.HORIZONTAL;
        c.ipady = 20;      //make this component tall
        c.weightx = 2;
        c.gridwidth = 8;
        c.gridx = 0;
        c.gridy = 11;
        pane.add(label, c);

        button2 = new JButton ("Next Match");
        c.fill = GridBagConstraints.HORIZONTAL;
        c.ipady = 20;      //make this component tall
        c.weightx = 2;
        c.gridwidth = 8;
        c.gridx = 0;
        c.gridy = 12;
        pane.add(button2, c);

        try {
            con = DriverManager.getConnection("jdbc:derby://localhost:1527/" 
+ "jfl", "jfl", "jfl");
            st = con.createStatement();
            String s = "SELECT Teamname,ID from JFL.TEAMS";

            rs = st.executeQuery(s);
            while (rs.next()) {
                comboH.addItem(rs.getString(1) + "  " + rs.getString(2));
                comboA.addItem(rs.getString(1) + "  " + rs.getString(2));
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "ERROR");
        } finally {
            try {
                st.close();
                rs.close();
                con.close();
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, "ERROR CLOSE");
            }
        }
    }

    /**
     * Create the GUI and show it.
     *
     * @param evt
     */
    public void actionPerformedd(ActionEvent evt) {

        String text = textField.getText();
        textArea.append(text + newline);
        textField.selectAll();

        //Make sure the new text is visible, even if there
        //was a selection in the text area.
        textArea.setCaretPosition(textArea.getDocument().getLength());
    }

    private static void createAndShowGUI() {
        //Create and set up the window.
        JFrame frame = new JFrame("Junior Football League");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JMenuBar menubar = new JMenuBar();
        frame.setJMenuBar(menubar);

        //file menu
        JMenu fileMenu = new JMenu("File");
        menubar.add(fileMenu);

        JMenuItem quitItem = new JMenuItem("Quit");
        fileMenu.add(quitItem);
        quitItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //call another method to close window
                System.exit(0);
            }
        });
        JMenu helpItem = new JMenu("Teams");
        menubar.add(helpItem);

        JMenuItem subMenu = new JMenuItem("Create New Team");


    public static void main(String[] args) {
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

}

给出的错误信息是

运行:

  

线程“AWT-EventQueue-0”中的异常   java.lang.NumberFormatException:对于输入字符串:“”at   java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)     在java.lang.Integer.parseInt(Integer.java:592)at   java.lang.Integer.parseInt(Integer.java:615)at   demooo.Demooo.addComponentsToPane(Demooo.java:127)at at   demooo.Demooo.createAndShowGUI(Demooo.java:918)at   demooo.Demooo.access $ 000(Demooo.java:12)at   demooo.Demooo $ 6.run(Demooo.java:936)at   java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)at   java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)at at   java.awt.EventQueue.access $ 500(EventQueue.java:97)at   java.awt.EventQueue $ 3.run(EventQueue.java:709)at   java.awt.EventQueue $ 3.run(EventQueue.java:703)at   java.security.AccessController.doPrivileged(Native Method)at   java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)     在java.awt.EventQueue.dispatchEvent(EventQueue.java:726)at   java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)     在   java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)     在   java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)     在   java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)     在   java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)     at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)   建立成功(总时间:1秒)

1 个答案:

答案 0 :(得分:1)

你在第127行有这个。

int h = Integer.parseInt(homegoal.getText());

异常中的以下行告诉我错误是在该行,它是关于转换形式String到Int。

java.lang.Integer.parseInt(Integer.java:592) at 
java.lang.Integer.parseInt(Integer.java:615) at 
demooo.Demooo.addComponentsToPane(Demooo.java:127) at 

我会看一下homegoal.getText()的价值。如果为null,则在int变量中输入0。

编辑:从它的外观来看,您只是创建文本字段,因此它将为空。这就是错误的原因。检查是否为空并在空时分配0。

int h = (homegoal == null || homegoal.getText().isEmpty()? 0:Integer.parseInt(homegoal.getText());