Java “线程中的异常”;“主要”;错误:未解决的编译问题:局部变量num1可能尚未初始化
这就是我如何使用letter1,它是一个字符Java “线程中的异常”;“主要”;错误:未解决的编译问题:局部变量num1可能尚未初始化,java,Java,这就是我如何使用letter1,它是一个字符 System.out.println("Please enter a telephone number expressed as letters and separated with a hyphen."); phone=console.next(); phone.toLowerCase(); letter1=phone.charAt(0); 程序立即表示,如果不询问初始化字母1的问题,num1可能无法初始化。因此,这让我相信问题就在这里,我可能犯
System.out.println("Please enter a telephone number expressed as letters and separated with a hyphen.");
phone=console.next();
phone.toLowerCase();
letter1=phone.charAt(0);
程序立即表示,如果不询问初始化字母1的问题,num1可能无法初始化。因此,这让我相信问题就在这里,我可能犯了语法错误或其他错误。因为有可能通过
if
案例中的无
您需要在任何if
案例之前将其定义为默认值,或者让最后一个案例实现if(…){…}else{…}
,并将默认值放入else
第一种方法比第二种方法推荐得多
此外,您没有正确地将字符串更改为小写
if (letter1=='a'||letter1=='b'||letter1=='c')
{num1=2;}
if (letter1=='f'||letter1=='e'||letter1=='d')
{num1=3;}
if (letter1=='g'||letter1=='h'||letter1=='i')
{num1=4;}
if (letter1=='j'||letter1=='k'||letter1=='l')
{num1=5;}
if (letter1=='m'||letter1=='n'||letter1=='o')
{num1=6;}
if (letter1=='p'||letter1=='q'||letter1=='r'||letter1=='s')
{num1=7;}
if (letter1=='t'||letter1=='u'||letter1=='v')
{num1=8;}
if (letter1=='w'||letter1=='x'||letter1=='y'||letter1=='z')
{num1=9;}
System.out.println(num1);
否则,您将转换为小写,但不保存结果,结果将丢失。有一个执行路径,您没有在其中初始化
num1
,特别是如果letter1
不是小写字母
初始化num1
为某个值,因此它在所有执行路径中都有一个值,可能是某个无效的值
phone = console.next();
phone = phone.toLowerCase();
您甚至可以选择抛出一个
IllegalArgumentException
或打印一条错误消息,如果您完成了所有的案例,并且num1
仍然是-1
phone.toLowerCase()代码>不起作用您需要将结果重新分配给phone
,因为字符串是不可变的。编译器不知道您只要求字母,也不知道用户是否真的输入了字母,也不知道他们是否num1
不会被初始化为任何字符。
int num1 = -1;