Java中else标记语法错误求助:输入校验if-else语句报错
问题解决:Java if-else语法错误及输入校验优化
错误原因
你的代码里if语句的右括号后面多了一个分号;,这个分号会让if的逻辑体变成空语句,后面的大括号就成了独立的代码块,导致else找不到对应的if,所以触发了语法错误。
修正后的代码
btnAdd = new JButton("ADD"); btnAdd.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 去掉if后面的分号,同时加上trim()避免空格被误判为有效输入 if(txtPc.getText().trim().equals("") || txtPn.getText().trim().equals("") || txtPt.getText().trim().equals("") || txtQuant.getText().trim().equals("")) { JOptionPane.showMessageDialog(null, "Please fill up all the informations!"); } else { Object[] row = new Object[4]; row[0] = txtPc.getText(); row[1] = txtPn.getText(); row[2] = txtPt.getText(); row[3] = txtQuant.getText(); model.addRow(row); txtPc.setText(""); txtPn.setText(""); txtPt.setText(""); txtQuant.setText(""); txtPc.requestFocus(); } } });
额外优化建议
- 避免空格误判:上面代码里加了
trim(),可以过滤用户输入的空格,防止只输入空格就被当成有效内容。 - 简化空判断逻辑:如果项目里可以引入Apache Commons Lang库,用
StringUtils.isBlank()能更简洁地判断空或空白字符串:import org.apache.commons.lang3.StringUtils; // 替换if条件 if(StringUtils.isBlank(txtPc.getText()) || StringUtils.isBlank(txtPn.getText()) || StringUtils.isBlank(txtPt.getText()) || StringUtils.isBlank(txtQuant.getText())) { // 提示信息 } - 提取校验方法:如果多处需要类似校验,可以把输入检查逻辑抽成单独方法,让代码更整洁:
之后在监听方法里直接用private boolean isInputEmpty() { return txtPc.getText().trim().isEmpty() || txtPn.getText().trim().isEmpty() || txtPt.getText().trim().isEmpty() || txtQuant.getText().trim().isEmpty(); }if(isInputEmpty())即可。
内容的提问来源于stack exchange,提问作者Saito Hiraga
相关产品推荐
相关产品推荐

