現在、Hangman GUIでHW割り当てとして作業していますが、すべてのコードが完了しています(私は思うが)、nullpointerexceptionを取得しています。それが起源である私の人生は私をかなり怒らせる。私は、私が間違いを犯した場所と、それを訂正するために何をする必要があるのかを理解するのに役立つ2番目の目が必要です。前もって感謝します!Hangman GUIがnullポインタ例外を受け取りましたが、どこにも見つかりません
NPEがで発生している:
alphabet = "abcdefghijklmnopqrxtuvwxyz";
numLetters = 26;
for (int count = 0; count < numLetters; count++) {
letterChoice[count] = new JButton(Character.toString(alphabet
.charAt(count)));
letterChoice[count].addActionListener(new CharacterListener(
alphabet.charAt(count)));
letterChoice[count].setMnemonic(65 + count);
add(letterChoice[count]);
}
そして、ここですべての私のコードです。
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.ImageIcon;
import javax.swing.SwingConstants;
public class HangmanPanel extends JPanel {
private JLabel imageLabel, numberLetters, gameOver, youWin;
private JLabel[] spaces;
private ImageIcon[] images;
private JButton exitProgram, newGame, nextImage;
private JButton[] letterChoice;
private int imageNumber, letterNumber, numLetters, guesses;
private WordList wordRand;
private String word, alphabet;
public HangmanPanel() {
newGame = new JButton("New Game");
newGame.setEnabled(true);
newGame.setToolTipText("Press to restart game.");
newGame.addActionListener(new NewGame());
exitProgram = new JButton("Exit");
exitProgram.setEnabled(true);
exitProgram.setToolTipText("Press to close the program.");
exitProgram.addActionListener(new ExitGame());
wordRand = new WordList();
word = wordRand.getWord();
images = new ImageIcon[8];
// Populating the array
{
images[0] = new ImageIcon("hangman0.png");
images[1] = new ImageIcon("hangman1.png");
images[2] = new ImageIcon("hangman2.png");
images[3] = new ImageIcon("hangman3.png");
images[4] = new ImageIcon("hangman4.png");
images[5] = new ImageIcon("hangman5.png");
images[6] = new ImageIcon("hangman6.png");
images[7] = new ImageIcon("hangman7.png");
}
setBackground(Color.white);
imageLabel = new JLabel(images[imageNumber]);
imageNumber++;
add(imageLabel);
alphabet = "abcdefghijklmnopqrxtuvwxyz";
numLetters = 26;
for (int count = 0; count < numLetters; count++) {
letterChoice[count] = new JButton(Character.toString(alphabet
.charAt(count)));
letterChoice[count].addActionListener(new CharacterListener(
alphabet.charAt(count)));
letterChoice[count].setMnemonic(65 + count);
add(letterChoice[count]);
}
spaces = new JLabel[word.length()];
while (letterNumber < spaces.length) {
numberLetters = new JLabel("___");
add(numberLetters);
letterNumber++;
}
add(nextImage);
add(newGame);
add(exitProgram);
}
private class NewGame implements ActionListener {
public void actionPerformed(ActionEvent event) {
imageLabel.setIcon(images[0]);
imageNumber = 0;
imageNumber++;
imageLabel.repaint();
}
}
private class ExitGame implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}
private class CharacterListener implements ActionListener {
public CharacterListener(char charAt) {
}
public void actionPerformed(ActionEvent e) {
while (guesses < images.length) {
int count = 0;
while (count < word.charAt(count)) {
if (letterChoice[count].equals(word.charAt(count))) {
spaces[count] = new JLabel("" + letterChoice[count]
+ "");
count++;
} else
imageLabel.setIcon(images[imageNumber]);
imageNumber++;
imageLabel.repaint();
guesses++;
}
if (guesses == 7) {
gameOver = new JLabel(
"You lose! Press New Game to try again!");
add(gameOver);
} else
youWin = new JLabel(
"You win! Press New Game to play again or press Exit to remain Victorious!");
add(youWin);
}
}
}
}
ご自身で足踏みをしてください。 NPEはどこから由来していますか?デバッグ中に何を学びましたか? –
私はそれがここに由来していると信じています。 alphabet = "abcdefghijklmnopqrxtuvwxyz"; numLetters = 26; for(int count = 0; count
Structures
質問に追加してください。 –