[英]how to handle java null values
我正在開發一個小應用程序,當我點擊按鈕 total 時,我想獲得總數。 但是如果有空值,代碼代碼不起作用。所以另外添加了以下代碼。
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));
}
}
});
我假設您正在使用Swing JTextField,它是一個JTextComponent。
getText返回一個String,因此,在稍后將其解析為int之前,您需要檢查其null還是為空。
檢查它的方法很少, !textField.getText().isEmpty()
和textField.getText() != null
就個人而言,我將使用Commons Lang庫StringUtils並僅檢查字符串是否為isBlank(textField.getText())
另外,您還應該驗證輸入。您可以使用上述庫,並在if語句中使用StringUtils.isNumeric()
。
該代碼是錯誤的
if ((textField.getText().equals(null))) {
QtyOfChickenBurger = Integer.parseInt(textField.getText())*0;
}
如果textField.getText()
為null,則無法將null
解析為Integer
。 另外,您將0乘以數字是什么意思? =>只需將其設置為0。將其更改為
if (textField.getText()==null || textField.getText().equals("")){
QtyOfChickenBurger = 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"
的字符串進行比較。
閱讀: 如何比較Java中的字符串?
我假設用戶可以在該文本字段中寫他想要的內容,因此當文本字段的值類似於'asd'時,您也應該注意;
String QtyOfChickenBurgerAsString =textField.getText();
Integer QtyOfChickenBurger=null;
try{
QtyOfChickenBurger = Integer.valueOf(QtyOfChickenBurgerAsString);
}catch(Exception ex){
System.out.println(" this is not a number ...do whatever u wanna do");
}
if (QtyOfChickenBurger!=null){
System.out.println("integer value of field text "+QtyOfChickenBurger);
}
我建議以小寫字母開頭的變量創建變量,當使用equals比較時,請首先使用常量。此外,通過使用僅接受數字的組件,您可以找到更好的解決方案。
從 java 9 開始,Object 類有一個處理空值的便捷方法,它可以在 java.util 中找到。
public static String processEmployee(String fullName){
// if fullName is null then second argument is returned,otherwise fullName is
String name = Objects.requireNonNullElse(fullName, "empty");
// the processing goes here ...
return name;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.