Java代码运行报Cannot convert from void to int错误如何解决?
问题根因
你遇到的编译错误本质是返回值类型不匹配:
JOptionPane.showMessageDialog()是纯展示用的弹窗方法,没有返回值(返回类型为void),你尝试把它的执行结果赋值给String类型的resultRoll变量,Java编译器无法完成void到对应类型的转换,因此抛出该错误。- 额外补充:你的代码还存在3个可修复的问题:
- main方法为空,项目运行时不会执行
Dice构造方法里的掷骰子逻辑 rnd.nextInt(7-1)可以简化为rnd.nextInt(6),该方法返回的是[0,参数)区间的整数,加1后刚好是1-6的骰子点数- 缺少必要的Swing、工具类导包语句
- main方法为空,项目运行时不会执行
修复方案
你不需要用变量接收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
相关产品推荐
相关产品推荐

