我已經寫了一個java小程序,它似乎在運行時打開sun.applet.AppletViewer。我正在使用Stanford Engineering Everywhere Hangman作業的acm庫。我遇到的問題似乎沒有與代碼,除非我沒有做我應該做的一些實現。基本上Applet Viewer掛着只是說「開始applet ...」,程序沒有運行。我以前沒有遇到過這個問題,所以我想我會問這裏以防有人遇到過這樣的問題。我想這可能是拋出的默認異常情況,但我沒有收到錯誤消息,所以我懷疑它。Applet未運行:Stanford Engineering Everywhere Hangman
我認爲代碼應該可以工作,但是我會發布它,以防在此時出現一些明顯的問題。我沒有完成任務,但是我相信如果我沒有這個問題,它會起作用。
Hangman.java
import acm.graphics.*;
import acm.program.*;
import acm.util.*;
import java.awt.*;
import java.io.*;
public class Hangman extends ConsoleProgram {
//private static final int NUM_GUESSES=8;
/*new instance of HangmanLexicon.java */
private HangmanLexicon hangLex;
private HangmanCanvas canvas;
/*new random generator to get indexes of words in hangLex*/
//private RandomGenerator rgen = RandomGenerator.getInstance();
/*Stores word that use is trying to guess*/
private String hidden="";
/*Displayed version of hidden*/
private String displayHidden = "";
/*prompt for player to enter their guess, which gets stored
* as a string*/
private String guess = readLine("Your guess: ");
/*counts down until user has no more guesses*/
private int guessCounter = 8;
private String repeat = readLine("Play again? (y or n): ");
public void init() {
canvas = new HangmanCanvas();
add(canvas);
}
/*Runs through program, acts as main*/
public void run() {
/* You fill this in */
println("Welcome to the Hangman program!");
while(true) {
setUpWord();
displayWord();
guessesLeft();
guess = readLine("Your guess: ");
println(guess);
checkGuess();
if(displayHidden.equals(hidden)) {
println("You guessed the word: " + hidden);
println("You win.");
println(repeat);
if(!repeat.equals("n")) {
guessCounter=8;
canvas.reset();
}else {
break;
}
} else if (guessCounter==0) {
println("The word was: " + hidden);
println("You lose.");
println(repeat);
if(!repeat.equals("n")) {
guessCounter=8;
canvas.reset();
}else {
break;
}
}
}
}
/*sets hidden to a random word in hangLex*/
private void setUpWord() {
hangLex = new HangmanLexicon();
hidden=hidden.concat(hangLex.getWord(8));
}
/*Prints the updated version of the known word after a guess is entered*/
private void displayWord() {
if (displayHidden.equals("")) {
for (int i= 0; i<hidden.length(); i++) {
displayHidden = displayHidden.concat("-");
}
println("The word now looks like this: " + displayHidden);
} else if(guessCounter==0) {
} else {
println("The word now looks like this: " + displayHidden);
}
}
/*prints updates on the number of guesses the user has left to console*/
private void guessesLeft() {
if (guessCounter > 1) {
println("You have " + guessCounter + " guesses left.");
} else if (guessCounter == 1) {
println("You have only one guess left.");
} else if (guessCounter == 0) {
println("You're completely hung.");
}
}
private void checkGuess() {
int letterCounter =0;
while (guess.length()>1) {
println("Guesses must be single characters.");
println(guess);
}
char checkLetter = guess.charAt(0);
guessCounter--;
//
if(Character.isLowerCase(checkLetter)) {
Character.toUpperCase(checkLetter);
}
//
for(int i=0; i<hidden.length(); i++) {
if(hidden.charAt(i) == checkLetter) {
displayHidden = displayHidden.substring(0, i) + guess +
displayHidden.substring(i+1);
} else {
letterCounter++;
}
}
//
if (letterCounter==hidden.length()) {
println("There are no " + checkLetter + "'s in the word.");
} else if (letterCounter!=hidden.length()) {
println("That guess is correct.");
}
}
}
HangmanLexicon.java
import acm.util.*;
public class HangmanLexicon {
/** Returns the number of words in the lexicon. */
public int getWordCount() {
return 10;
}
/** Returns the word at the specified index. */
public String getWord(int index) {
switch (index) {
case 0: return "BUOY";
case 1: return "COMPUTER";
case 2: return "CONNOISSEUR";
case 3: return "DEHYDRATE";
case 4: return "FUZZY";
case 5: return "HUBBUB";
case 6: return "KEYHOLE";
case 7: return "QUAGMIRE";
case 8: return "SLITHER";
case 9: return "ZIRCON";
default: throw new ErrorException("getWord: Illegal index");
}
};
}
我還沒有與其他文件完成,但我不認爲應該關注的一個問題,事,直到我已經整理了applet的東西。
2個問題:1)什麼是用於啓動這個小程序的hTML? 2)你有沒有問題? – 2011-06-16 06:12:45
1.我不知道它是否使用html。它應該運行在一個單獨的窗口中,我同意它對applet來說有點不合常規,但它是針對一個類的,所以我不認爲它們會使用html。我只是想知道懸掛是否有任何解釋 – Slayer0248 2011-06-16 15:58:53