让我的代码正常工作时遇到问题。我无法在GUI中显示char数组(myArray)。当它正常工作时,我必须显示数组,如果接下来使用字母,我必须重新显示数字与使用的字母消失。继续这个直到字母数组为空。我在引号中放置了指令的说明。我目前正在使用Eclipse。
开发游戏 - 基于“Wordmole” 向用户显示一个字母网格(读取 从文件)。让用户输入一个 单词使用输入对话框。如果 输入的单词是有效的 检查单词的所有字母 出现在网格中。否则使用消息 用于显示错误消息的对话框。如果 这个词的所有字母都在 网格,然后奖励玩家 适当的点,和 删除网格中的字母。其他 使用消息对话框告诉用户 这个词不在那里。让玩家 继续播放直到用户退出 通过不输入单词或通过 点击取消。网格没有 其中包含更多字母。
import java.awt.GridLayout;
//import java.util.StringTokenizer;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Project2 {
public static String inputWord;
public static String matrix = "Words\n\n";
public static String total = "Total\n\n";
public static String newWord;
public static char[][] myArray;
public static void main(String[] args){
myArray = fillArray("project2a.txt");
while(true){
int count = 0;
int sum = 0;
inputWord = JOptionPane.showInputDialog(null,"Enter a word:");
if(inputWord == null || inputWord.length() == 0) break;
newWord = inputWord.toUpperCase();
if(IsValidWord(newWord)){
for(int x = 0; x < newWord.length(); x++){
for(int i = 0; i < 10; i ++){
for(int j = 0; j < 10; j++){
if(newWord.charAt(x) == myArray[i][j]) count++;
}
}
}
if(count == newWord.length()){
for(int c = 0; c < newWord.length(); c++)
sum += scoreValue(newWord.charAt(c));
for(int x = 0; x < newWord.length(); x++){
for(int i = 0; i < 10; i ++){
for(int j = 0; j < 10; j++){
if(newWord.charAt(x) == myArray[i][j]) myArray[i][j] = (' ');
}
}
}
matrix = matrix + newWord + "\n";
total = total + sum + "\n";
}
else
JOptionPane.showMessageDialog(null,"The word is not there!!!");
} // IF
else
JOptionPane.showMessageDialog(null,"ERROR: The word is invalid!!!");
} //while
createAndShowGUI();
}
public static char[][] fillArray(String myFile){
TextFileInput tfi = new TextFileInput(myFile);
String line = tfi.readLine();
System.out.println(line);
int rows, cols;
rows = Integer.parseInt(line);
cols = Integer.parseInt(line);
char[][] rtn = new char[rows][cols];
for(int i=0; i < rows; i++) {
line = tfi.readLine();
System.out.println(line);
for(int j= 0; j < cols; j++) {
rtn[i][j] = line.charAt(j);
} // For
} // For
return rtn;
} // FillArray
public static boolean IsValidWord(String myWord){
for(int i = 0; i < myWord.length(); i++)
if(!Character.isLetter(myWord.charAt(i))) return false;
return true;
} // IsValidWord
public static int scoreValue(char letters){
if(Character.isLetter(letters)){
if(letters == 'A' || letters == 'E' || letters == 'I' || letters == 'O' || letters == 'U')
return 0;
else if(letters == 'K' || letters == 'V' || letters == 'F' || letters == 'W') return 5;
else if(letters == 'X' || letters == 'Q') return 10;
} // If statement
return 1;
} // scoreValue
public static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("Word Game");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize( 100,100);//width, height);
frame.setLocation(200,200);//x, y);
frame.setLayout(new GridLayout(1,2));
JTextArea textArea = new JTextArea(5, 20);
JTextArea textArea1 = new JTextArea(5, 20);
textArea.setEditable(false);
textArea1.setEditable(false);
JScrollPane scrollPane = new JScrollPane(textArea);
JScrollPane scrollPane2 = new JScrollPane(textArea1);
frame.getContentPane().add(scrollPane);
frame.getContentPane().add(scrollPane2);
textArea.setText(matrix);
textArea1.setText(total);
//Display the window.
frame.pack();
frame.setVisible(true);
}// createAndShowGUI
public static void createAndShowGUI2() {
//Create and set up the window.
JFrame frame = new JFrame("Letters");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize( 100,100);//width, height);
frame.setLocation(200,200);//x, y);
frame.setLayout(new GridLayout(1,2));
JTextArea textArea = new JTextArea(5, 20);
textArea.setEditable(false);
JScrollPane scrollPane = new JScrollPane(textArea);
frame.getContentPane().add(scrollPane);
textArea.setText(myArray);
//Display the window.
frame.pack();
frame.setVisible(true);
}// createAndShowGUI
}
答案 0 :(得分:1)
在传递多维char数组时,JTextComponent setText获取String。我不完全确定你要做什么,但尝试在显示之前想出一种变成字符串的方法。记住String类有一个接受char数组的构造函数;)
答案 1 :(得分:0)
好的,所以你试图用一个数组初始化一个textArea,如果你看一下JTextArea的api,它有一个方法setText(String someText),如果你传入一个数组就无法工作。我很惊讶eclipse没有将此标记为错误。所以你需要循环你的字符数组并使用insert(字符串,位置)设置字段,请参阅api。将此与shendrics回答从char数组创建一个字符串,你应该设置为go。