如何处理java null值

时间:2017-12-12 06:12:19

标签: java null

我正在开发一个小应用程序,当我点击按钮总数时,我希望得到总数。但是如果有空值,代码代码就会工作。所以还添加了以下代码。

int QtyOfChickenBurger;

if ((textField.getText().equals(null))) {
    QtyOfChickenBurger = Integer.parseInt(textField.getText())*0;
} else {
    QtyOfChickenBurger = Integer.parseInt(textField.getText()) * 70;
}

但是当textField为空时,我的应用程序仍然不输出总数。所以请帮我解决这个问题。这是完整的代码。

JButton bttotal = new JButton("Total");
bttotal.setBounds(21, 37, 145, 25);
bttotal.setFont(new Font("Thoma", Font.PLAIN, 12));
bttotal.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg) {

            int QtyOfChickenBurger;

            if ((textField.getText().equals(null))) {

                QtyOfChickenBurger = Integer.parseInt(textField.getText())*0;
            } else {
                QtyOfChickenBurger = Integer.parseInt(textField.getText()) * 70;
            }

            int QtyOfChickenBurgerMeal = Integer.parseInt(textField_2.getText()) * 120;
            int QtyOfCheeseBurger = Integer.parseInt(textField_3.getText()) * 340;
            int QtyOfDrinks = Integer.parseInt(enterQTY.getText());
            int spriteCost = Integer.parseInt(enterQTY.getText()) * 55;
            int cokaColaCost = Integer.parseInt(enterQTY.getText()) * 60;
            int pepsiCost = Integer.parseInt(enterQTY.getText()) * 40;
            int lemonJuceCost = Integer.parseInt(enterQTY.getText()) * 35;
            int sum = (QtyOfChickenBurger + QtyOfChickenBurgerMeal + QtyOfCheeseBurger);
            lblDisplayCostOfMeals.setText(Integer.toString(sum));
            String x = String.valueOf(comboBox.getSelectedItem());

            if (x == "Sprite") {

                lblDisplayCostOfDrinks.setText(Integer.toString(spriteCost));
            } else if (x == "Select the drink") {
                lblDisplayCostOfDrinks.setText("0");
            } else if (x == "Coka Cola") {
                lblDisplayCostOfDrinks.setText(Integer.toString(cokaColaCost));
            } else if (x == "Pepsi") {
                lblDisplayCostOfDrinks.setText(Integer.toString(pepsiCost));
            } else if (x == "Lemon juce") {
                lblDisplayCostOfDrinks.setText(Integer.toString(lemonJuceCost));
            }
        }
    });

4 个答案:

答案 0 :(得分:0)

我认为您使用的是Swing JTextField,它是一个JTextComponent。

getText返回一个String,因此,在稍后将其解析为int之前,您需要检查它是null还是空。

检查它的方法很少,!textField.getText().isEmpty()textField.getText() != null

就个人而言,我会使用Commons Lang库StringUtils,只检查字符串isBlank(textField.getText())

此外,您应该验证输入,您也可以使用上面提到的库并在if语句中使用StringUtils.isNumeric()

答案 1 :(得分:0)

此代码错误

if ((textField.getText().equals(null))) {    
    QtyOfChickenBurger = Integer.parseInt(textField.getText())*0;
}

如果textField.getText()为空,则无法将null解析为Integer。另外,你将0乘以一个数字为什么? =>只需将其设置为0。 将其更改为

if (textField.getText()==null || textField.getText().equals("")){
    QtyOfChickenBurger = 0;
}

答案 2 :(得分:0)

首先textField.getText().equals(null)永远不会有用,只会引发NullPointerException更好地使用textField.getText()==null

因为用户可以在TextField中输入任何内容,所以您需要验证输入或创建try-catch-block。

最好的方法是创建一个解析数字的帮助方法,例如:

public static int readInteger(String text, int defaultValue) {
    if(text == null)
        return defaultValue;
    try {
        return Integer.parseInt(text);
    } catch (NumberFormatException nfe) {
        return defaultValue;
    }
}

顺便说一下,只有当你想检查字符串是否为空时,才能将字符串与x == "Pepsi"进行比较。
阅读:How do I compare strings in Java?

答案 3 :(得分:0)

我假设用户可以在该文本字段中写出他想要的内容,因此当textfield具有类似'asd'的值时,您也应该注意;

Class<T> persistentClass = (Class<T>)
   ((ParameterizedType)yourRepo.getClass().getGenericSuperclass())
      .getActualTypeArguments()[0];

我建议使用小写的起始字母创建变量,当使用equals进行比较时,首先使用常量。也可以通过使用仅接受文本中的数字的组件找到更好的解决方案。