gpt4 book ai didi

java - Word Scramble 游戏不会将用户猜测与原始单词进行比较,Java

转载 作者:行者123 更新时间:2023-12-01 10:47:09 26 4
gpt4 key购买 nike

大家好,我的程序无法将用户的猜测与从文件中读取的原始单词进行比较。我知道这有很多问题,目前还不太漂亮,但任何帮助将不胜感激。基本上,类 userGuess 应该从文件“Words.txt”中读取一个随机单词,然后它应该获取它选择的单词并在 ScrambleWord 方法中对其进行打乱,并显示打乱的单词。接下来,它应该询问用户的猜测,并使用compareGuess方法将其与原始单词进行比较,并告诉用户他们是对还是错。

这是我的课

import java.io.*;
import java.util.Random;
import java.util.Scanner;
public class userGuess
{
private String guess;
private String word;
private String answer;
public userGuess()
{
guess = "";
word="";
answer="";
}

public String getWord()
{
try
{
Random r = new Random();
File file = new File("Words.txt");
Scanner inputFile = new Scanner(file);
while (inputFile.hasNext())
{
word = inputFile.nextLine();
}
inputFile.close();
}
catch (IOException IOError)
{
word="Error" + IOError;
}
return word;
}

//Scamble Word
public String ScrambleWord(Random rn, String sWord)
{
char a[] = sWord.toCharArray();

// Scramble the letters
for( int i=0 ; i<a.length-1 ; i++ )
{
int j = rn.nextInt(a.length-1);
// Swap letters
char temp = a[i]; a[i] = a[j]; a[j] = temp;
}

return new String( a );

}

public String userGuess()
{
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter Guess here: ");
guess = keyboard.nextLine().toUpperCase();
return guess;
}

public String compareGuess()
{
if ( guess.equalsIgnoreCase(word))
{
System.out.println("Winner");
}
else if(guess != word)
{
System.out.println("Try Again");
}
return "";
}
}

这是我的主课

import java.io.*;
import java.util.Random;
import java.util.Scanner;
//import com.WordScramble.MacLean.ScrambleWord;
import com.WordScramble.MacLean.userGuess;
public class WordGame

{
public static void main(String[] args) throws IOException
{
// Declare Variables
String word="";
String wordCopy="";
Random r = new Random();
File file = new File("Words.txt");
Scanner inputFile = new Scanner(file);
word = inputFile.nextLine();
wordCopy = inputFile.nextLine();
//System.out.println(word);

//get scrambled word
userGuess sWord = new userGuess();
System.out.println(sWord.ScrambleWord(r, word));

//get user guess
userGuess uGuess = new userGuess();
System.out.println(uGuess.userGuess());

//compae user guess
userGuess compare = new userGuess();
System.out.println(compare.compareGuess());


}

}

问题是当我输入用户猜测时,它总是告诉我我是对的,即使它是错的,再次非常感谢任何帮助。

最佳答案

乍一看你的代码有一些问题。您的程序始终接受,因为您的“比较”是使用 userGuess 的新实例完成的。调用

//compae user guess
userGuess compare = new userGuess();
System.out.println(compare.compareGuess());

使用构造函数创建类的新实例

public userGuess()
{
guess = "";
word="";
answer="";
}

因此所有变量都包含一个空字符串。与您的方法比较

guess.equalsIgnoreCase(word)

结果

"".equalsIgnoreCase("")

这始终是正确的。

您还使用 userGuess 的新实例读取用户猜测,这会导致将您的猜测保存在另一个对象中,而不是用于打乱您的单词或用于比较的对象。

//get user guess
userGuess uGuess = new userGuess();
System.out.println(uGuess.userGuess());

此外,您正在程序的主方法中读取单词,而不是将其保存在 userGuess 的任何实例中,因此您的 userGuess 对象都不包含输入单词。

每次都必须使用同一个对象。所以尝试类似的事情

userGuess guess = new userGuess();
System.out.println(guess.scramble(r, guess.getWord()));
System.out.println(guess.userGuess());
System.out.println(guess.compareGuess());

关于java - Word Scramble 游戏不会将用户猜测与原始单词进行比较,Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34107734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com