Java 猜谜游戏帮助:)

Java 猜谜游戏帮助:),java,boolean,java.util.scanner,Java,Boolean,Java.util.scanner,好的,我的电脑老师让我们做一个简单的游戏,让用户猜一个radomly生成的数字,但我想更进一步,让它在用户尝试某些事情时显示错误消息。这里的问题是,我对布尔语言还不熟悉,而且我在使用java.util.Scanner和布尔语言时遇到了一些问题。所以,如果有人能快速看一下这个,我将不胜感激 import java.util.Scanner; import java.util.Random; public class MoreGuessing{ //Instantiation

好的,我的电脑老师让我们做一个简单的游戏,让用户猜一个radomly生成的数字,但我想更进一步,让它在用户尝试某些事情时显示错误消息。这里的问题是,我对布尔语言还不熟悉,而且我在使用java.util.Scanner和布尔语言时遇到了一些问题。所以,如果有人能快速看一下这个,我将不胜感激

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");}
}
}
import java.util.Scanner;
导入java.util.Random;
公开课猜测{
//实例化
扫描仪阅读器=新扫描仪(System.in);
随机数=新随机数();
//变数
int randomnumber=number.nextInt(10)+1;
int-cntr=1;
静态字符串小数猜测;
String error1=“Error001:找到小数点,请输入1-10之间的整数。”+“\n”+“程序终止……”;//小数部分错误。
String error2=“请输入正数。“+”\n“+”程序终止……;//负数错误。
String error3=“输入了未知字符。”+“\n”+“程序终止……”;//未知字符错误。
//验证者
公共静态布尔验证字母(){
if(小数猜测的匹配(“[a-zA-Z]+”){
返回true;
}否则{
返回false;
}
}        
公共静态void main(字符串[]args){
//输入和显示
System.out.print(“请输入1-10之间的整数:”);
小数猜测=reader.nextLine();
//过程和错误
while(小数猜测!=随机数){
如果(verifyLetters()!=false){
系统输出打印项次(错误3);
系统退出(1);}
如果(小数猜测%1!=0){
系统输出打印项次(错误1);
系统退出(1);}
if(小数猜测<0){
系统输出打印项次(错误2);
系统退出(1);}
if(随机数!=小数猜测){
System.out.println(“您输了,请再试一次。”);}
System.out.print(“请输入1-10之间的整数:”);
小数猜测=reader.nextDouble();
cntr++;
}
if(cntr==1){System.out.println(“恭喜!您第一次尝试时就猜到了数字!”);;
}
else{System.out.println(“恭喜!你猜到了数字,花了你“+cntr+”次尝试”);}
}
}

您需要解析输入
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
仍然是一个字符串,但是
guess
现在包含它的整数版本,因此您可以将它与
randomnumber
进行正确比较。(您的循环以前从未退出过,因为字符串从未==整数)


其他一些注意事项:

你不应该有:

if (condition) {
    return true;
} else {
    return false;
}
这总是可以简单地替换为

return condition;

感觉你对这个很陌生。欢迎来到编程

因此,首先,在Java中,通常不会将所有实例化和变量都放在主函数之外,除非将所有内容都设置为静态。我会将所有这些移到主函数中,取消decimalguessed变量的静态设置,并设置verifyLetters函数以获取字符串decimalguessed的参数。检查值是否为数字也可能是明智的,而不是查看它是否不是字母。有很多非数字、非字母字符

一旦你知道猜测是一个数字,你就需要告诉java它是一个十进制数(将它转换成一个十进制数),然后再与这个十进制数做进一步的比较

达斯安卓也提出了一些好的观点,特别是关于布尔人。决不应该让if/else的唯一结果是返回布尔值,只要返回布尔值即可。另外,避免将其与真/假进行比较,只需对函数/变量单独执行if,或使用“!”进行否定即可检查是否有错误

祝你好运