猜猜游戏帮助:)

时间:2016-03-25 16:15:03

标签: java boolean java.util.scanner

好的,所以我的计算机老师要求我们制作一个简单的游戏,要求用户猜测一个粗略生成的数字,但我想更进一步,并使其在用户尝试时显示错误消息确定的事情。这里的问题是我是布尔人的新手,好吧,我在使用java.util.Scanner和booleans时遇到了一些麻烦。所以,如果有人能快速浏览一下,我会很感激。

import java.util.Scanner;
import java.util.Random;

public class MoreGuessing{
//Instantiation            
            Scanner reader = new Scanner(System.in);
            Random number = new Random();
//Variables
    int randomnumber = number.nextInt(10) + 1;
    int cntr = 1;
    static String decimalguessed;
    String error1 = "Error001: Decimal found, please enter a whole number between 1-10." + "\n" + "Program terminated......";//Decimal portion error.
    String error2 = "Please enter a positive number." + "\n" + "Program terminated......"; //Negative number error.
    String error3 = "Unknown character entered." + "\n" + "Program terminated......"; //Unknown character error.
//Verifier
public static boolean verifyLetters() {
    if (decimalguessed.matches("[a-zA-Z]+")){
        return true;
    }else{
        return false;
    }
}        
public static void main(String [] args){
//Input and display
    System.out.print("Please enter a whole number between 1-10: ");
        decimalguessed = reader.nextLine();
//Process and Errors
while (decimalguessed != randomnumber) {
if (verifyLetters() != false){
            System.out.println(error3);
            System.exit(1);}
if (decimalguessed % 1 != 0) {
            System.out.println(error1); 
            System.exit(1);}
if (decimalguessed < 0) {
            System.out.println(error2); 
            System.exit(1);}
if (randomnumber != decimalguessed){
            System.out.println("You've lost, please make another attempt.");}
System.out.print("Please enter a whole number between 1-10: ");
    decimalguessed = reader.nextDouble();

cntr++;

    }
if (cntr == 1) {System.out.println("Congratulations! You've guessed the number on your first attempt!");;
}
else {System.out.println("Congratulations! You've guessed the number, it took you " + cntr + " tries");}
}
}

2 个答案:

答案 0 :(得分:1)

您需要解析输入。 decimalguessed是一个字符串,因此您无法进行decimalguessed % 1等比较。

您可以将其转换为如下整数:

int guess = 0;
try {
    guess = Integer.parseInt(decimalguessed);
} catch (NumberFormatException e) {
    System.out.println("Your guess was not an integer: " + e.getMessage());
    System.exit(1);
}

这将处理decimalguessed包含字母的情况,以及包含小数点/分数的情况。 decimalguessed仍然是一个字符串,但guess现在包含它的整数版本,因此您可以正确地将其与randomnumber进行比较。 (你的循环之前从未退出,因为字符串永远不会= =整数)

其他一些说明:

你永远不应该:

if (condition) {
    return true;
} else {
    return false;
}

这总是可以简单地替换为

return condition;

答案 1 :(得分:0)

感觉你对此非常陌生。欢迎编程!

首先,在Java中,你通常不会在主函数之外拥有所有的实例化和变量,除非你要将所有东西都设置为静态。我将所有这些移动到您的main函数中,取消静态decimalguessed变量并设置您的verifyLetters函数以获取String decimalguessed的参数。检查值是否为数字也许是明智的,而不是查看它是否不是字母。有很多非数字,非字母的字符。

一旦你发现猜测是一个数字,你需要告诉java它是一个(转换它)到一个小数,然后你进一步比较那个十进制。

Darth Android也提出了一些好处,特别是关于布尔值。你应该永远不会有if / else的唯一结果是返回一个布尔值,只返回布尔值。还要避免与true / false进行比较,只需单独对函数/变量执行if,或者使用'!'对其进行否定。检查是否错误。

祝你好运!