大家好,我无法让我的程序将用户猜测与从文件中读取的原始单词进行比较。我知道这有很多问题,而且目前还不过分,但任何帮助都会非常感激。基本上类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());
}
}
问题是,当我进入用户猜测它总是告诉我即使它错了也是对的,再次任何帮助都非常感谢。
答案 0 :(得分:1)
首先,你的代码有一些问题。您的计划始终接受,因为您的比较&#34;是使用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());