gpt4 book ai didi

Java:它一直说 "variable yn might not have been initialized"

转载 作者:行者123 更新时间:2023-12-01 17:43:23 24 4
gpt4 key购买 nike

我已经初始化了变量 yn,但它一直说我没有初始化。尝试直接在扫描仪上对其进行初始化,但出现错误并再次提示它已在方法中初始化。

import java.util.Scanner;

public class sample
{
public static void main(String[] args)
{

Scanner s = new Scanner(System.in);

int num;
char yn;

while (yn == 'Y' && yn == 'y')
{
do
{
System.out.print("Enter a positive integer: ");
num = s.nextInt();
if (num < 0)
{
System.out.print(num + "is a negative integer. Please try again!");
}
else
{
if (num % 2 == 0)
{
System.out.println(num + " is an even number.");
}
else
{
System.out.println(num + " is an odd number.");
}
continue;
}
}
while (num < 0);
System.out.println("Press Y if you want to input again and N if no.");
yn = s.next().charAt(0);
do
{
if (yn == 'N' && yn == 'n')
{
System.out.println("Done!");
break;
}
else if (yn == 'Y' && yn == 'y')
{
System.out.println("Done!");
continue;
}
else
{
System.out.println("Invalid Input! Try again!");
break;
}
}
while (yn != 'Y' && yn != 'y' && yn != 'N' && yn != 'n');
}

}
}

最佳答案

您声明 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))修复它。

关于Java:它一直说 "variable yn might not have been initialized",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58256413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com