首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >do while循环Java

do while循环Java
EN

Stack Overflow用户
提问于 2017-06-21 03:46:08
回答 4查看 813关注 0票数 1

所以我几乎是一个编程新手,忙于处理"do while循环“,我的代码可能很糟糕,很可能有1000种更好的方法来做我想要做的事情,但不管怎样。

我尝试使用main方法,然后使用其他两个方法(出于练习目的),要求用户选择1到10之间的一个数字,然后如果他们想重试。

我让代码一直运行,直到它要求用户输入yes/no,但随后代码停止运行,我不知道为什么?

代码语言:javascript
复制
public static void main(String[] args) {
    chooseNum();

}

public static boolean chooseNum() {
    int number = 4;
    do {
        System.out.println("Enter a number 1 to 10");
        int userNum = in.nextInt();
        if (number == userNum) {
            System.out.println("You chose the correct number!");
            return tryAgain();
        } else if (number != userNum) {
            System.out.println("You chose the incorrect number!");
            return tryAgain();
        } else
            System.out.println("invalid Response");
    }
    while (false);
    return false;
}

public static boolean tryAgain(){

        System.out.println("Try again? yes/no");
        String response = in.nextLine();
        if (response.equalsIgnoreCase("yes")){
            return chooseNum();
        }else if (response.equalsIgnoreCase("no")){
            return false;
    }else
        return false;
    }
}

我的输出如下:

代码语言:javascript
复制
Enter a number 1 to 10
1
You chose the incorrect number!
Try again? yes/no

Process finished with exit code 0

我似乎不能进一步得到它,以便我输入是或否。

我知道这是最基本的,我很可能看起来很可悲,但任何帮助都将不胜感激。

也许另一个菜鸟可以得到帮助别人的机会:)

非常感谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-06-21 04:03:28

使用next()而不是nextLine(),因为当您读取int并添加\n来提交值时。扫描仪将此视为输入。next()应该忽略之前输入的\n,并按照您的预期接受输入。

票数 0
EN

Stack Overflow用户

发布于 2017-06-21 04:00:33

只需在方法中创建扫描器的新实例,就可以避免nextLine错误。我在chooseNum和tryAgain中声明了一个新的扫描器,这将避免缓冲输入导致的问题,从而对您的代码进行了编辑。我希望这能有所帮助。

代码语言:javascript
复制
import java.util.Scanner;

public class dowhile {
    public static void main(String[] args) {
        chooseNum();
    }

    public static boolean chooseNum() {
        Scanner in = new Scanner(System.in);
        int number = 4;
        do {
            System.out.println("Enter a number 1 to 10");
            int userNum = in.nextInt();
            if (number == userNum) {
                System.out.println("You chose the correct number!");
                return tryAgain();
            } else if (number != userNum) {
                System.out.println("You chose the incorrect number!");
                return tryAgain();
            } else
                System.out.println("invalid Response");
        }
        while (false);
        return false;
    }

    public static boolean tryAgain(){
        Scanner in = new Scanner(System.in);
        System.out.println("Try again? yes/no");
        String response = in.nextLine();
        if (response.equalsIgnoreCase("yes")){
            return chooseNum();
        }else if (response.equalsIgnoreCase("no")){
            return false;
        }else
            return false;
    }
}
票数 0
EN

Stack Overflow用户

发布于 2017-06-21 04:02:31

当执行return tryAgain();行时,chooseNum()方法结束。这是return语句的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44661797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档