“I will guess your age” 游戏未正常工作

huangapple go评论74阅读模式
英文:

"I will guess your age" game not working properly

问题

import java.util.Scanner;

public class kouzlo {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int currentyear = 2020;
        System.out.println ("欢迎!我可以猜出你的年龄。你是哪一年出生的?");
        int yearofbirth = scanner.nextInt();
        System.out.println ("你今年过生日了吗?");
        boolean yes, Yes, YES, y, Y = true;
        boolean no, No, NO, n, N = false;
        boolean hadbirthday = scanner.hasNextBoolean();
        int summary = currentyear - yearofbirth;
        int summary2 = currentyear - yearofbirth - 1;
        if (hadbirthday == true) {
            System.out.println("你今年 " + summary + " 岁!");
        }
        else {
            System.out.println("你今年 " + summary2 + " 岁!");
        }
    }
}
英文:

I tried to make a really simple "I will guess your age" game. When I say that I haven't had birthday this year, it works just fine, but when I say that I had birthday this year, it does the same thing as when I say I didn't. For example, when i say that i was born in 2000 and say that i haven't had birthday this year, it would say that I'm 19 years old, which is correct. But when I say that I had birhday this year, it also says that I'm 19, which is, obviosly, not correct. Can someone please tell me where is the problem? Any help would be appreciated, thanks. “I will guess your age” 游戏未正常工作

import java.util.Scanner;

public class kouzlo {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int currentyear = 2020;
        System.out.println ("Welcome! I can guess your age. What year were you born?");
        int yearofbirth = scanner.nextInt();
        System.out.println ("Have you had your birthday this year?");
        boolean yes, Yes, YES, y, Y = true;
        boolean no, No, NO, n, N = false;
        boolean hadbirthday = scanner.hasNextBoolean();
        int summary = currentyear - yearofbirth;
        int summary2 = currentyear - yearofbirth - 1;
        if (hadbirthday == true) {
            System.out.println("You're " + summary + " years old!");
        }
        else {
            System.out.println("You're " + summary2 + " years old!");
        }
    }
}

答案1

得分: 1

为了回答你的问题,Federico的评论是正确的。你需要像这样做:

boolean hadbirthday = false;

if (scanner.hasNextBoolean()) {
  hadbirthday = scanner.nextBoolean();
};

我还注意到了这些代码行:

boolean yes, Yes, YES, y, Y = true;

boolean no, No, NO, n, N = false;

看起来这些是没有用的。如果你想允许用户输入其中之一,并将其解释为布尔值,你需要使用hasNext() / next(),然后检查生成的字符串是否与你的模式之一匹配。

英文:

To answer your question, the comment of Federico is right. You need to do something like:

boolean hadbirthday = false;

if (scanner.hasNextBoolean()) {
  boolean hadbirthday = scanner.nextBoolean();
};

I also see these lines:

boolean yes, Yes, YES, y, Y = true;

boolean no, No, NO, n, N = false;

which seems to be useless. If you want to allow the user to enter one of those and interpret it as a boolean, you will have to use hasNext() / next() and check if the resulting string matches one of your patterns.

huangapple
  • 本文由 发表于 2020年4月4日 20:07:19
  • 转载请务必保留本文链接:https://go.coder-hub.com/61027828.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定