Java中menu返回int作while条件报错int无法转换为boolean如何解决?
问题解决方法
错误原因
Java语法规定while循环的括号内必须是boolean类型的结果,你写的while(scelta=menu())是赋值表达式,整个表达式返回的是int类型的scelta值,Java没有C/C++那种「0自动转false、非0自动转true」的隐式转换规则,因此直接报类型转换错误。
修复步骤
1. 修正main方法的while循环条件
你的业务逻辑是用户选择0时退出程序,因此可以把赋值和判断组合写为:
while((scelta = menu()) != 0) { // 这里写switch(scelta)处理各个选择分支的逻辑即可 }
括号不能省略,因为赋值运算符=的优先级低于不等于运算符!=,加括号保证先执行menu()调用并把返回值赋值给scelta,再判断scelta是否不等于0,非0则进入循环执行对应分支,为0则直接退出循环。
2. 修复menu方法中存在的死循环bug
你当前menu里的do-while条件写为while(scelta>0 || scelta<9),该条件永远为真:比如输入0满足scelta<9,输入10满足scelta>0,会一直卡着让用户输入。按照你菜单0-8的合法选项范围,修正为:
while(scelta < 0 || scelta > 8);
这样只有用户输入了0-8之外的非法值时,才会重新要求输入。
3. 补充缺失的包导入
代码中使用了Scanner类,需要在类的最上方添加导入语句:
import java.util.Scanner;
修正后完整可运行代码
import java.util.Scanner; public class PComputer { public static void main(String[] args) { int scelta; while((scelta=menu()) != 0) { switch(scelta) { case 1: // 处理创建学生逻辑 break; case 2: // 处理创建电脑逻辑 break; // 剩余case依次补充即可 } } System.out.println("程序已退出"); } static int menu() { Scanner keyboard = new Scanner(System.in); int scelta; do { System.out.println("************************************************************"); System.out.println("ACCESSO AL MENU DI SISTEMA-SELEZIONARE L'AZIONE VOLUTA: "); System.out.println("1- Creazione e inserimento dati studente: "); System.out.println("2- Creazione e inserimento dati computer: "); System.out.println("3- Aggiugni computer: "); System.out.println("4- Elimina computer: "); System.out.println("5- Ricerca per codice: "); System.out.println("6- Ricerca computer acquistati dopo una certa data: "); System.out.println("7- Ricerca computer con una certa caratteristica: "); System.out.println("8- Elenco studenti a cui è stato assegnato un pc: "); System.out.println("0- Esci"); System.out.println("************************************************************"); scelta=keyboard.nextInt(); if(scelta<0 || scelta>8) { System.out.println("Si prega di inserire un numero valido!"); } } while(scelta <0 || scelta>8); return scelta; } }
内容的提问来源于stack exchange,提问作者Alessandro Karoui
相关产品推荐
相关产品推荐

