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

Java代码运行报Cannot convert from void to int错误如何解决?

问题根因

你遇到的编译错误本质是返回值类型不匹配:

  • JOptionPane.showMessageDialog() 是纯展示用的弹窗方法,没有返回值(返回类型为void),你尝试把它的执行结果赋值给String类型的resultRoll变量,Java编译器无法完成void到对应类型的转换,因此抛出该错误。
  • 额外补充:你的代码还存在3个可修复的问题:
    1. main方法为空,项目运行时不会执行Dice构造方法里的掷骰子逻辑
    2. rnd.nextInt(7-1)可以简化为rnd.nextInt(6),该方法返回的是[0,参数)区间的整数,加1后刚好是1-6的骰子点数
    3. 缺少必要的Swing、工具类导包语句
修复方案

你不需要用变量接收showMessageDialog的返回值,如果需要保留掷骰子结果字符串,可以提前拼接好再传给弹窗方法即可,修复后的完整代码如下:

import java.awt.Component;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Dice {
    public static void main(String[] args){
        // 实例化Dice类触发构造方法里的逻辑
        new Dice();
    }
    
    Dice () {
        Component f = new JFrame();
        Random rnd = new Random();

        // 生成6个1-6的随机数
        int n1 = 1 + rnd.nextInt(6);
        int n2 = 1 + rnd.nextInt(6);
        int n3 = 1 + rnd.nextInt(6);
        int n4 = 1 + rnd.nextInt(6);
        int n5 = 1 + rnd.nextInt(6);
        int n6 = 1 + rnd.nextInt(6);
        
        // 提前拼接结果字符串,若后续需要使用可以直接调用resultRoll
        String resultRoll = "Yay! You rolled: " + n1 + " " + n2 + " " + n3 + " " + n4 + " " + n5 + " " + n6;
        // 直接调用弹窗方法,不用接收返回值
        JOptionPane.showMessageDialog(f, resultRoll);
    }
}

内容的提问来源于stack exchange,提问作者stuscot53

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 02:51:02