java - 循环的行为不符合我的预期

标签 java while-loop off-by-one

我编写的代码可以编译,但不会产生我期望的输出。它在我输入所有输入数据之前结束,并且没有给我正确的输出。知道错误在哪里吗?

这是主程序:

public static void main(String[]args)
{
    Scanner keyboard = new Scanner(System.in);
    String coinFlip;
    int tossNumber, numberOfHeads, numberOfTails;
    float percHeads, percTails;
    tossNumber = 1;
    numberOfHeads = 0;
    numberOfTails = 0;

    while(tossNumber <= 8)
    {
        System.out.println("Please toss your coin and enter the side    showing.");
        System.out.println("h = heads, t = tails");
        coinFlip = keyboard.next();

        if(coinFlip.equals("h") || coinFlip.equals("t"))
        {
            if(coinFlip.equals("h"))
            {
                System.out.println("Thank you! Please toss your coin again.");
                tossNumber = tossNumber + 1;
                numberOfHeads = numberOfHeads + 1;
            }
            else

                System.out.println("Thank you! Please toss your coin again");
                tossNumber = tossNumber + 1;
                numberOfTails = numberOfTails + 1;

        }
        else
            System.out.println("Please enter a \"h\" or \"t\".");
    }

最佳答案

我所做的就是将 {} 添加到您的 else 中,我完美地完成了 8 次,希望这是预期的。

import java.util.Scanner;

public class MC_GAMAD {

    public static void main(String[] args) {

        Scanner keyboard = new Scanner(System.in);
        String coinFlip;
        int tossNumber, numberOfHeads, numberOfTails;
        float percHeads, percTails;
        tossNumber = 1;
        numberOfHeads = 0;
        numberOfTails = 0;

        while (tossNumber <= 8) {
            System.out
                    .println("Please toss your coin and enter the side    showing.");
            System.out.println("h = heads, t = tails");
            coinFlip = keyboard.next();

            if (coinFlip.equals("h") || coinFlip.equals("t")) {
                if (coinFlip.equals("h")) {
                    System.out
                            .println("Thank you! Please toss your coin again.");
                    tossNumber = tossNumber + 1;
                    numberOfHeads = numberOfHeads + 1;
                } else {
                    System.out
                            .println("Thank you! Please toss your coin again");
                    tossNumber = tossNumber + 1;
                    numberOfTails = numberOfTails + 1;
                }

            } else {
                System.out.println("Please enter a \"h\" or \"t\".");
            }

        }

    }
}

关于java - 循环的行为不符合我的预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33398590/

相关文章:

java - 隐写术后第一个字节的位相差一位

Java:在运行时和编译时向类添加字段?

performance - 哪个循环更快,while 还是 for?

java - 虽然 Java 中的 try/catch 打破了 true 循环

php - 使用 mysql 数据库中的数据在 html 表中显示给定时间的事件并发进程数

c++ - 在使用 eof() 的 while 循环中因一个错误而关闭

c - 如何有效地解决 C 中的差一错误?

java - Android 4.3 HTTPUrlConnection + Basic Auth - 未发现身份验证挑战

java - 如何将 ArrayList 转换为 JSON 对象

java - 正则表达式匹配带有或不带有 http 和 https 的主机;