Java中String转Int报错求助:incompatible types问题
解决String转Int的类型不匹配问题
嘿,这个问题我之前也碰到过,很容易搞定!咱们先把问题理清楚:你的Categorie类里IdentCat字段是int类型,所以setIdentCat()方法接收的是int参数,但你现在传的是jTextIdent.getText().toUpperCase()——这是个String类型,自然会报incompatible types的错误。
核心解决方案:String转Int + 异常处理
Java里把String转成int最常用的方法是Integer.parseInt(),但要注意:如果用户输入的不是合法数字(比如字母、空格、空字符串),这个方法会抛出NumberFormatException,所以必须加上异常捕获,既避免程序崩溃,又能给用户友好的输入提示。
修改后的完整代码
private void jButtonOKActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: Categorie ap = new Categorie(); // 处理IdentCat的类型转换,增加输入校验 try { // 先trim()去掉前后空格,避免因空格导致转换失败 int identCat = Integer.parseInt(jTextIdent.getText().trim()); ap.setIdentCat(identCat); } catch (NumberFormatException e) { // 输入不合法时弹出提示,阻止后续插入操作 JOptionPane.showMessageDialog(null, "请输入有效的整数ID!", "输入错误", JOptionPane.ERROR_MESSAGE); return; } ap.setDenomCat(jTextDescr.getText()); boolean ok = daoCat.insertCategorie(ap); if (!ok) { JOptionPane.showMessageDialog(null,"Insertion impossible !","Avertissement",JOptionPane.ERROR_MESSAGE); } this.dispose(); }
几个小提醒:
- 你之前写的
toUpperCase()对数字来说毫无意义,因为数字没有大小写之分,直接去掉就好。 trim()很关键!如果用户输入了前后空格(比如" 123 "),parseInt()会直接抛出异常,所以必须用trim()先清理掉多余空格。- 异常处理不能少,不然用户随便输入个字母,程序直接崩溃,体验会很差。
内容的提问来源于stack exchange,提问作者juliee
相关产品推荐
相关产品推荐

