4 回答
TA贡献1847条经验 获得超7个赞
您声明时yn没有初始值,然后立即将其用作循环条件。
char yn;
while(yn == 'Y' && yn == 'y'){
意味着您期望默认值y(或Y)。您必须显式设置它才能使其成为true。另外,没有一个字符是两者兼而有之'Y','y'所以你需要一个逻辑或。喜欢,
char yn = 'Y';
while(yn == 'Y' || yn == 'y') {
您也可以考虑
char yn = 'Y';
while (Character.toUpperCase(yn) == 'Y') {
然后你就不需要一个||. 你在这里也有同样的逻辑不可能性
if(yn == 'N' && yn == 'n'){
System.out.println("Done!");
break;
}
else if(yn == 'Y' && yn == 'y'){
System.out.println("Done!");
continue;
}
||并可以用(或用)修复它Character.toUpperCase(char)。
TA贡献1963条经验 获得超6个赞
char yn;
这是声明变量的地方。
while(yn == 'Y' && yn == 'y'){
这是您使用变量的地方。这两行之间没有 yn 初始化 - 这就是它未初始化时使用的原因。
TA贡献1966条经验 获得超4个赞
在Java中,每当你声明一个变量但不初始化它(就像你的情况一样char yn;
),编译器会进一步检查它的初始化部分。
如果您稍后在任何具有条件的范围内初始化它(例如您的情况while (yn == 'Y' && yn == 'y'){..}
),那么编译器将无法在编译时决定范围或块内的代码是否将被执行。
因此,尽管您已在块内进行了初始化,但编译器无法保证。
因此编译器会抛出一个错误,指出变量未初始化。
TA贡献1951条经验 获得超3个赞
将“Yn”视为一个容器,如果您想测试该容器内的内容,则需要在容器中放置一些东西,或者在本例中
char yn;
应该成为
char yn = 'Y';
您使用while 循环和if语句进行测试
char yn; //You are DECLARING a variable char yn = 'Y' //You are Initialising a variable
就你而言,你可以说
char yn = ' ';
因为我相信这就是你试图做的
我还注意到您正在尝试测试yn变量是否同时为大写和小写,您可以通过将 && (AND) 更改为 || 来解决此问题 (或者)
添加回答
举报