我正在开发一个小应用程序,当我点击按钮总数时,我希望得到总数。但是如果有空值,代码代码就会工作。所以还添加了以下代码。
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));
}
}
});
答案 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进行比较时,首先使用常量。也可以通过使用仅接受文本中的数字的组件找到更好的解决方案。