You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:42:23