Java:尝试使用 while 循环来检查扫描仪输入中是否有 int 变量,不确定如何初始化变量?

Java: Trying to use a while loop to check scanner input for an int variable, not sure how to initialize the variable?

提问人:dietCokeIsTheDevil 提问时间:4/14/2023 更新时间:4/14/2023 访问量:59

问:

这是我自己编写的第一批程序之一。我正在编写一个程序来告诉你你的星座是什么,我让程序使用我导入的扫描仪方法运行,但我遇到的问题是现在我试图使用 while 循环检查用户输入,它没有按我的预期运行,当我编译我的代码时,我遇到的错误是我的 int 类型的变量未初始化。我在声明它没有赋值时写了它,我不确定我应该分配什么来解决这个问题。

导入 java.util.Scanner;

公共类 MyStarSign {

public static void main(String[] args) {

Scanner myScanner = new Scanner(System.in);  // Create a Scanner object
System.out.println("What month were you born?");

String birthMonth = "";

    

birthMonth= myScanner.next();  // Read user input



System.out.println("You were born in " + birthMonth + "?");  // Output user input

System.out.println("What day of the month were you born?");

int birthDay;

    while (birthDay > 31) {

        System.out.println("Please enter a valid day of the month");

        birthDay = myScanner.nextInt();
    
    }

这就是我的代码现在的样子^^

现在对于我尝试的解决方案:

int birthDay = myScanner.nextInt();

    while (birthDay > 31) {

        System.out.println("Please enter a valid day of the month");

        birthDay = myScanner.nextInt();
    
    }

这是我试图解决这个问题的方法,尽管我在编译代码时再次遇到同样的问题

Java while-循环 java.util.scanner

评论


答:

0赞 Benevos 4/14/2023 #1

Initialize 意味着它需要有一个初始值,如下所示:

int birthDay = 0;

因此,您唯一需要做的就是为变量添加一个值

编辑:试试这个代码

import java.util.Scanner;

public class MyStarSign 
{

    public static void main(String[] args) 
    {

        Scanner myScanner = new Scanner(System.in);  // Create a Scanner object
        System.out.println("What month were you born?");

        String birthMonth = "";

        birthMonth= myScanner.next();  // Read user input

        System.out.println("You were born in " + birthMonth + "?");  // Output user input

        System.out.println("What day of the month were you born?");

        int birthDay = 0;

        while (birthDay > 31) 
        {

            System.out.println("Please enter a valid day of the month");

            birthDay = myScanner.nextInt();

        }
    }
}

评论

0赞 dietCokeIsTheDevil 4/14/2023
自从发布这个问题以来,我也尝试过,但我遇到了同样的错误。但我怀疑它现在来自另一个问题,因为在我的终端中,当我编译代码时,即使在删除 while 循环后,它也会给我同样的错误,即使我确保保存我的代码,它也指向不再存在的 while 循环
0赞 Benevos 4/14/2023
你是如何编译代码的?您使用的是哪个 IDE 或编辑器?您确定要保存更改吗?显示哪个错误?我确实复制了您的代码来运行它。问题可能出在这一点上
0赞 Benevos 4/14/2023
在您的代码中缺少括号,我假设您只是忘记了它们,但我会添加一个我测试过的代码供您复制并运行
0赞 dietCokeIsTheDevil 4/14/2023
我相对确定它没有缺少括号,在添加 while 循环之前,程序运行良好,没有问题并且按预期工作,while 循环是我今晚打开文本编辑器以来唯一接触过的东西
0赞 dietCokeIsTheDevil 4/14/2023
我只是使用 javac 编译它MyStarSign.java
0赞 Nitin Magadum 4/14/2023 #2
public static void main(String[] args) {

    Scanner myScanner = new Scanner(System.in);  // Create a Scanner object
    System.out.println("What month were you born?");

    String birthMonth = "";

    birthMonth= myScanner.next();  // Read user input

    System.out.println("You were born in " + birthMonth + "?");  // Output user input
    System.out.println("What day of the month were you born?");

    int birthDay;
    birthDay = myScanner.nextInt();

    while (birthDay > 31) {
        System.out.println("Please enter a valid day of the month");
        birthDay = myScanner.nextInt();
    }
}

评论

0赞 seenukarthi 4/14/2023
与其只是发布代码,不如解释它的作用以及它如何回答问题。