【发布时间】:2013-03-28 21:39:11
【问题描述】:
所以在我的程序中,我试图将几个不同的类合并到我正在编写代码的主程序中。
我得到了什么
Dictionary() {
dictionary = new String[NUMBER_OF_WORDS];
Scanner inputStream = null;
try {
inputStream = new Scanner(new File(FILE_NAME));
}catch (FileNotFoundException e) {
System.out.println("Dictionary class cannot find file \"dictionaryData.txt\".");
System.out.println("Please make sure that the file is in the project folder.");
System.exit(0);
}
for (int i = 0; i < NUMBER_OF_WORDS; i++) {
dictionary[i] = inputStream.next();
}
}
public String getRandomWord(){
Random generator = new Random();
String temp = new String();
temp += dictionary[generator.nextInt(NUMBER_OF_WORDS)];
return temp;
}
public boolean find(String word) {
int count = 0;
int lowerIndex = 0;
int upperIndex = NUMBER_OF_WORDS - 1;
int middleIndex;
while(lowerIndex <= upperIndex){
middleIndex = (lowerIndex + upperIndex) / 2;
count++;
if(word.equalsIgnoreCase(dictionary[middleIndex])) { // found it
return true;
}
else if (word.compareToIgnoreCase(dictionary[middleIndex]) < 0) { // word smaller than middle
upperIndex = middleIndex - 1;
}
else { // word is larger than middle
lowerIndex = middleIndex + 1;
}
}
return false;
}
}
与另一个类 WordHider 一起
WordHider() {
secretWord = new String();
wordMask = new String();
}
public String getWordMask() {
return wordMask;
}
public String getSecretWord() {
return secretWord;
}
public void setSecretWord(String newSecretWord) {
secretWord = newSecretWord.toLowerCase();
if (secretWord.length() > 0) {
wordMask = HIDE_CHAR;
for (int i = 1; i < secretWord.length(); i++) {
wordMask += HIDE_CHAR;
}
}
}
public boolean isHiddenWordFound() {
for (int i = 0; i < wordMask.length(); i++) {
if(wordMask.charAt(i) == HIDE_CHAR.charAt(0)) {
return false;
}
}
return true;
}
public int revealLetter(String letter) {
int count = 0;
String newFoundWord = "";
if (letter.length() == 1) {
for (int i = 0; i < secretWord.length(); i++) {
if ((secretWord.charAt(i) == letter.charAt(0))
&& (wordMask.charAt(i) == HIDE_CHAR.charAt(0))) {
count++;
newFoundWord += letter;
}
else {
newFoundWord += wordMask.charAt(i);
}
}
}
wordMask = newFoundWord;
return count;
}
}
使用这些类,我必须想出如下代码:
Word: ********** Guesses Left: 5
Enter your guess: a
Miss!
Word: ********** Guesses Left: 4
Enter your guess: e
Miss!
Word: ********** Guesses Left: 3
Enter your guess: i
Word: i**i*i**** Guesses Left: 3
Enter your guess: o
Word: i**i*i*o** Guesses Left: 3
我对此有几个问题,
1) 我有一个dictionaryData.text,我得到了并且必须实现 到我的代码中。它包含一个 81,000 个单词的列表,我没有 确定如何让我的程序在那里识别它。字典类 找不到文件“dictionaryData.txt”。请确保文件 位于项目文件夹中。 ^ 当我尝试打印一个 随机词
2) 我如何让我的程序将单词的字母更改为 星星(隐藏单词)
3) 把它全部放在一个循环中?
【问题讨论】:
-
什么是
FILE_NAME?您的dictionaryData.txt文件在哪里?一次只问一个问题。 -
dictionaryData.txt 是我拥有的一个完整的单独文件
-
我问的是你所说的第一个问题
im not sure how to have my program recognize its there -
好的,我得到了我的主程序 Program3,然后是 2 个其他类,Dictionary 和 WordHider。为了使 Dictionary 工作,它需要识别并找到我的文本文件 dictionaryData.txt
-
我理解那部分。我要问的是你要传递给
FILE_NAME的字符串,如果该文件名是正确的并且位于你的 FILE_NAME 所说的位置,那么它将读取文件,否则它将抛出 FileNotFoundEcxception。
标签: java methods character hidden