我已经初始化了变量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;
应该成为
char yn = 'Y';
您可以使用while循环和if语句进行测试
char yn; //You are DECLARING a variable
char yn = 'Y' //You are Initialising a variable
在你的情况下,你可以说
char yn = ' ';
因为我相信这就是你想要做的
我还注意到您正在尝试测试yn变量是否同时为大写和小写,您可以通过更改
声明没有初始值的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原语具有默认值,但如下一位用户所述 当声明为类成员时,它们的默认值为零。局部变量没有默认值
我的编译器不会有它(现在怎么办?我必须完全重写整个应用程序吗? 要查看编译器拒绝的行,请执行系统搜索。出来println(celsius输出“C”); 当试图编译时,编译器告诉我,“变量celsiusOutput可能尚未初始化。”编译器对另外两个输出项中的任何一个都不说同样的话:华氏输出和开尔文输出。
我只是不明白为什么这不起作用: HelloWorld.java:15:错误:变量isOdd可能没有被初始化 如果(isOdd==false){
我正在研究Euler Problem 9项目,其中说明: 毕达哥拉斯三元组是由三个自然数组成的集合 例如,3^2 4^2=9 16=25=52。 确实存在一个毕达哥拉斯三重态,其bc=1000。查找产品abc。 以下是我到目前为止所做的: 当我运行代码时,会出现以下错误: 注意:我的每个变量(a、b和c)都有不同的行号。 我想当我声明a、b和c为整数时,如果不赋值,默认值是0。 即使不是这样,在我
下面是我的代码片段: 在这条线内: Java编译器抛出错误并说 错误:变量someObject可能尚未初始化`。 但是,如果等于,那么就不可能没有被初始化,为什么会出现这个错误?
问题内容: 我有一个方法创建一个,另一个方法更改字符串 我的编译器说它“可能尚未初始化”。 有人可以解释吗? 问题答案: 变量可能尚未初始化 在内部定义方法时,必须在其中初始化程序的每个变量中必须先使用一个值的地方。 同样重要的是,您的代码将永远无法正常运行,因为Java中的字符串是不可变的,因此您无法编辑字符串,因此应更改方法。 我将您的代码更改为类似的内容,但是我认为您的编辑方法应该做另一件事