Java中如何用switch语句比较两个变量?解决类型转换报错
用Switch语句处理整数比较的解决方案
你报错的核心原因是Java的传统switch分支要求case后必须是与switch表达式同类型的常量值,你原代码里switch的表达式是int类型的G,但case写的是G==r这类布尔表达式,类型不匹配,所以抛出"boolean cannot be converted to int"错误。
要实现需求,你可以先通过Integer.compare()方法把两个整数的比较结果转换成一个整数:
- 当
G < r时,返回-1 - 当
G == r时,返回0 - 当
G > r时,返回1
然后把这个返回值作为switch的表达式,就可以用对应的整数常量作为case分支了。
修正后的完整代码
import java.util.*; public class Sheetswitch { public static void main (String[] args) { Scanner scan = new Scanner (System.in); Random rand = new Random (); int r = rand.nextInt(9); int G = scan.nextInt(); // 计算比较结果,得到-1、0、1三个值之一 int compareResult = Integer.compare(G, r); switch (compareResult) { case 0: System.out.println("1"); break; case 1: System.out.println("2"); break; case -1: System.out.println("3"); break; } scan.close(); // 记得关闭Scanner资源 } }
Java 12+ 简洁写法
如果你的开发环境是Java 12及以上版本,还可以用更简洁的switch表达式语法:
import java.util.*; public class Sheetswitch { public static void main (String[] args) { Scanner scan = new Scanner (System.in); Random rand = new Random (); int r = rand.nextInt(9); int G = scan.nextInt(); String output = switch (Integer.compare(G, r)) { case 0 -> "1"; case 1 -> "2"; case -1 -> "3"; default -> ""; // 此分支不会触发,因为compare仅返回三个固定值 }; System.out.println(output); scan.close(); } }
内容的提问来源于stack exchange,提问作者you7
相关产品推荐
相关产品推荐

