-2

我正在尝试创建一个零售计算器,它将显示商品的销售价格。用户在一个文本框中输入项目的原始价格,并在另一个框中输入折扣百分比。然后用户点击计算按钮得到答案。我的问题是我无法让程序计算答案,而是收到很多错误消息。我只在几行上看到错误,但我不知道如何修复它们。以下是我的代码:

导入 javax.swing.JOptionPane;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * 
 * @author Owner
 */
public class RetailCalcForm extends javax.swing.JFrame {

    private void close() {
        throw new UnsupportedOperationException("Not yet implemented");
    }

    private static class number {

        public number() {
        }
    }

    private static class number2 {

        public number2() {
        }
    }

    /**
     * Creates new form RetailCalcForm
     */
    public RetailCalcForm() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        itemNameText = new javax.swing.JTextField();
        originalPriceText = new javax.swing.JTextField();
        percentDiscountedText = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        calculateButton = new javax.swing.JButton();
        salesPriceLabel = new javax.swing.JLabel();
        exitButton = new javax.swing.JButton();
        javax.swing.JComboBox departmentBox = new javax.swing.JComboBox();
        jLabel4 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("Item Name");

        jLabel2.setText("Original Price");

        jLabel3.setText("% Discounted");

        calculateButton.setText("Calculate Discount Price");
        calculateButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                calculateButtonActionPerformed(evt);
            }
        });

        salesPriceLabel.setText("Discounted Sales Price: ");

        exitButton.setText("Exit");
        exitButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                exitButtonActionPerformed(evt);
            }
        });

        departmentBox.setModel(new javax.swing.DefaultComboBoxModel(
                new String[] { "Electronics", "Toys", "Clothing", "Housewares",
                        "Garden" }));
        departmentBox.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                departmentBoxActionPerformed(evt);
            }
        });

        jLabel4.setText("Select Department");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
                getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(
                        layout.createSequentialGroup()
                                .addGap(28, 28, 2Cool

                                .addGroup(
                                        layout.createParallelGroup(
                                                javax.swing.GroupLayout.Alignment.LEADING)
                                                .addGroup(
                                                        layout.createSequentialGroup()
                                                                .addGroup(
                                                                        layout.createParallelGroup(
                                                                                javax.swing.GroupLayout.Alignment.LEADING)
                                                                                .addComponent(
                                                                                        jLabel2)
                                                                                .addComponent(
                                                                                        jLabel1))
                                                                .addContainerGap())
                                                .addGroup(
                                                        layout.createSequentialGroup()
                                                                .addGroup(
                                                                        layout.createParallelGroup(
                                                                                javax.swing.GroupLayout.Alignment.LEADING)
                                                                                .addComponent(
                                                                                        salesPriceLabel,
                                                                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                                                                        310,
                                                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                                                .addGroup(
                                                                                        layout.createSequentialGroup()
                                                                                                .addGroup(
                                                                                                        layout.createParallelGroup(
                                                                                                                javax.swing.GroupLayout.Alignment.LEADING)
                                                                                                                .addComponent(
                                                                                                                        jLabel3)
                                                                                                                .addComponent(
                                                                                                                        jLabel4))
                                                                                                .addGap(26,
                                                                                                        26,
                                                                                                        26)
                                                                                                .addGroup(
                                                                                                        layout.createParallelGroup(
                                                                                                                javax.swing.GroupLayout.Alignment.LEADING)
                                                                                                                .addComponent(
                                                                                                                        percentDiscountedText,
                                                                                                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                                                                                                        145,
                                                                                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                                                                                .addComponent(
                                                                                                                        departmentBox,
                                                                                                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                                                                                                        105,
                                                                                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                                                                                .addGroup(
                                                                                                                        layout.createSequentialGroup()
                                                                                                                                .addGroup(
                                                                                                                                        layout.createParallelGroup(
                                                                                                                                                javax.swing.GroupLayout.Alignment.LEADING)
                                                                                                                                                .addComponent(
                                                                                                                                                        originalPriceText,
                                                                                                                                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                                                                                                                                        145,
                                                                                                                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                                                                                                                .addComponent(
                                                                                                                                                        itemNameText,
                                                                                                                                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                                                                                                                                        145,
                                                                                                                                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                                                                                                                                .addPreferredGap(
                                                                                                                                        javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                                                                                                                        59,
                                                                                                                                        Short.MAX_VALUE)
                                                                                                                                .addComponent(
                                                                                                                                        calculateButton)))))
                                                                .addGap(0, 33,
                                                                        33))))
                .addGroup(
                        layout.createSequentialGroup().addGap(228, 228, 228)
                                .addComponent(exitButton)
                                .addGap(0, 0, Short.MAX_VALUE)));
        layout.setVerticalGroup(layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(
                        layout.createSequentialGroup()
                                .addGap(69, 69, 69)
                                .addGroup(
                                        layout.createParallelGroup(
                                                javax.swing.GroupLayout.Alignment.TRAILING)
                                                .addComponent(
                                                        departmentBox,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addComponent(jLabel4))
                                .addGap(35, 35, 35)
                                .addGroup(
                                        layout.createParallelGroup(
                                                javax.swing.GroupLayout.Alignment.TRAILING)
                                                .addComponent(jLabel1)
                                                .addComponent(
                                                        itemNameText,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGap(37, 37, 37)
                                .addGroup(
                                        layout.createParallelGroup(
                                                javax.swing.GroupLayout.Alignment.BASELINE)
                                                .addComponent(jLabel2)
                                                .addComponent(
                                                        originalPriceText,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGap(26, 26, 26)
                                .addGroup(
                                        layout.createParallelGroup(
                                                javax.swing.GroupLayout.Alignment.TRAILING)
                                                .addComponent(
                                                        percentDiscountedText,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addComponent(jLabel3))
                                .addGap(35, 35, 35)
                                .addComponent(salesPriceLabel)
                                .addPreferredGap(
                                        javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                        44, Short.MAX_VALUE)
                                .addComponent(exitButton).addGap(26, 26, 26))
                .addGroup(
                        layout.createSequentialGroup()
                                .addGap(140, 140, 140)
                                .addComponent(calculateButton,
                                        javax.swing.GroupLayout.PREFERRED_SIZE,
                                        87,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addContainerGap()));

        pack();
    }// </editor-fold>

    private void calculateButtonActionPerformed(java.awt.event.ActionEvent evt) {
        int number1 = 0, number2 = 0;
        try (
            int = Integer.parseInt(
            this.originalPriceText.getText());
        catch (Excemption e) {
            JOptionPane.showMessageDialog(this, "Invalid Price Amount", "Error", JOptionPane.ERROR_MESSAGE);
            return;
        }
        try (
            int = Integer.parseInt(
            this.percentDiscountedText.getText());
        catch (Excemption e) {
            JOptionPane.showMessageDialog(this, "Invalid Discount Amount", "Error", JOptionPane.ERROR_MESSAGE);
            return;
        }
        int answer = number1 / number2;
        this.salesPriceLabel.setText("Discounted Sales Price: " / answer);
    }

    private void departmentBoxActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    }

    private void exitButtonActionPerformed(java.awt.event.ActionEvent evt) {
        System.exit(0);
        close();

    }

    /**
     * @param args
     *            the command line arguments
     */
    public static void main(String args[]) {
        /*
         * Set the Nimbus look and feel
         */
        // <editor-fold defaultstate="collapsed"
        // desc=" Look and feel setting code (optional) ">
        /*
         * If Nimbus (introduced in Java SE 6) is not available, stay with the
         * default look and feel. For details see
         * http://download.oracle.com/javase
         * /tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager
                    .getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(RetailCalcForm.class.getName())
                    .log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(RetailCalcForm.class.getName())
                    .log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(RetailCalcForm.class.getName())
                    .log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(RetailCalcForm.class.getName())
                    .log(java.util.logging.Level.SEVERE, null, ex);
        }
        // </editor-fold>

        /*
         * Create and display the form
         */
        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new RetailCalcForm().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton calculateButton;
    private javax.swing.JButton exitButton;
    private javax.swing.JTextField itemNameText;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JTextField originalPriceText;
    private javax.swing.JTextField percentDiscountedText;
    private javax.swing.JLabel salesPriceLabel;
    // End of variables declaration
}

我能得到的任何帮助将不胜感激。

4

4 回答 4

3

这是一个 try catch 块(您忘记用}

try {
    number1  = Integer.parseInt(this.percentDiscountedText.getText());
} catch (Exception e) {
    JOptionPane.showMessageDialog(this, "Invalid Discount Amount", "Error", JOptionPane.ERROR_MESSAGE);
    return;
}

这是例外而不是例外


你需要一个+not a/来连接带有变量的字符串:

this.salesPriceLabel.setText("Discounted Sales Price: " +  answer);


要创建一个整数,您需要一个名称。

int = Integer.parseInt("1"); ---> int name = Integer.parseInt("1");

但是在您的情况下,您不必创建新的 int,我想您必须使用number1and number2


我不知道这条线有什么问题。首先我认为你必须Cool用括号替换

.addGap(28, 28, 2Cool  ---> .addGap(28, 28, 2)

但随后计算器不再工作(java.lang.IllegalArgumentException: Following is not met: min<=pref<=max)。
我的解决方案是删除这条线。

于 2012-06-05T17:25:36.217 回答
2

JFormattedTextField / JSpinnerNumber Formatter一起使用,而不是从 String 中解析数字

于 2012-06-05T17:30:23.153 回答
2

一件事,try/catch 块像所有其他块一样使用花括号,而不是括号。你有

try (
   // some code ...
) catch (Exception e) {
   // catch code here
}

什么时候应该

try {
   // some code ...
} catch (Exception e) {
   // catch code here
}

但更重要的是你的编码风格需要纠正。您似乎在屏幕上添加了很多代码,在您输入整个内容之前忽略了所有错误,这是灾难的根源。您需要在添加的每一行或两行代码之后更正每个编译错误。否则,您将一无所有,只有老鼠窝里几乎无法纠正的错误。

于 2012-06-05T17:20:27.477 回答
1

你在写——

int=Integer.parseint(this.originalPriceText.getText()); 

这是错误的!它应该是 -

number1=Integer.parseint(this.originalPriceText.getText()); 

此外,try 块被包裹在花括号内 -

try{
    // code goes here
}
catch(Exception ex){
    // code goes here
}

您再次描述了Exceptionto be Excemption

纠正所有这些,您的方法应该如下所示 -

private void calculateButtonActionPerformed(java.awt.event.ActionEvent evt) {
    int number1 = 0, number2 = 0;
    try{
        number1 = Integer.parseInt(this.originalPriceText.getText());
    }
    catch (Exception e) {
        JOptionPane.showMessageDialog(this, "Invalid Price Amount", "Error", 
                                           JOptionPane.ERROR_MESSAGE);
        return;
    }

    try {
        number2 = Integer.parseInt(this.percentDiscountedText.getText());
    }
    catch (Excemption e) {
        JOptionPane.showMessageDialog(this, "Invalid Discount Amount", "Error", 
                                            JOptionPane.ERROR_MESSAGE);
        return;
    }

    int answer = number1 / number2;
    this.salesPriceLabel.setText("Discounted Sales Price: " / answer);
}

您应该快速浏览教程。

于 2012-06-05T17:47:49.440 回答