Java使用Integer.parseInt()遇语法错误:Syntax error on tokens, Resources expected instead
问题解决:Integer.parseInt()语法错误及代码修复
核心错误原因
你在checkInt()方法里误用了try-with-resources语法——这种语法的括号里只能放实现了AutoCloseable接口的资源对象,而Integer.parseInt()是普通方法调用,不能放在这里,这就是触发语法错误的根本原因。
其他需要修复的问题
checkInt()声明为boolean类型,但没有任何return语句,编译会报错java.lang包下的类默认自动导入,import java.lang.Integer;属于冗余代码,可以直接删除
修复后的完整代码
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class RentalApp{ public static boolean checkInt(String s) { try { Integer.parseInt(s); return true; // 解析成功,返回true } catch (NumberFormatException e) { // 只捕获数字格式异常,不要捕获所有Exception return false; // 解析失败,返回false } } public static void main(String[] args) { final int WINDOW_WIDTH = 700; final int WINDOW_HEIGHT = 450; // 创建窗口 JFrame window = new JFrame(); window.setTitle("Vehicle Rental System"); window.setSize(WINDOW_WIDTH, WINDOW_HEIGHT); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 添加选择提示文本 JLabel text = new JLabel("Select Vehicle Type:"); window.add(text); // 创建并添加下拉菜单 String[] choices = {"Car", "Truck", "Bike"}; final JComboBox c1 = new JComboBox(choices); c1.setPreferredSize(new Dimension (80, 25)); window.add(c1); // 添加天数输入提示文本 JLabel text2 = new JLabel("Enter Number of Rental Days:"); window.add(text2); // 创建并添加天数输入框 final JTextField dayInput = new JTextField(5); window.add(dayInput); // 创建并添加计算按钮 JButton button = new JButton("Calculate Rent"); window.add(button); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 先验证输入是否为整数 if (!checkInt(dayInput.getText())) { JOptionPane.showMessageDialog(window, "请输入有效的整数天数"); return; } int days = Integer.parseInt(dayInput.getText()); switch ((String) c1.getSelectedItem()){ case "Car": // 汽车租金计算代码 break; case "Truck": // 卡车租金计算代码 break; case "Bike": // 自行车租金计算代码 break; } } }); window.setLayout(new FlowLayout()); window.setVisible(true); } }
额外优化说明
- 把catch里的
Exception改成NumberFormatException,避免捕获无关异常,逻辑更精准 - 在按钮点击事件里加入了输入验证逻辑,调用
checkInt()判断用户输入是否合法,提升交互体验
内容的提问来源于stack exchange,提问作者Aj Mammone
相关产品推荐
相关产品推荐

