我已经在这个项目上工作了一段时间,我仍然无法弄清楚它的第一部分。我正在尝试制作一个字母网格来进行单词搜索,但我似乎无法弄清楚如何打印它。到目前为止,我有:
import javax.swing.SwingUtilities;
public class Driver {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new LeFrame();
}
});
}
}
然后我必须使用toString方法打印它,但我无法访问toString中的数组。
public wordsearch(int row, int col, String letters){
if (letters.length()== row*col){
gridletters= letters;
gridrow=row;
gridcol=col;
letters= letters.toUpperCase();
String array[][]= new String[row][col];
int character=0;
for(int rowNum =0; rowNum<row; rowNum++){
for(int colNum=0; colNum<col; colNum++){
array[rowNum][colNum] = letters.charAt(character) + "";
character++;
}
}
}
}
有人帮忙吗?
答案 0 :(得分:2)
您无法访问另一个方法体内声明的局部变量(除非您从第一个方法调用第二个方法并将该变量作为参数传递)。您必须在课程级别声明它。
public class YourClass {
private String array[][];
public wordsearch(int row, int col, String letters){
if (letters.length()== row*col){
gridletters= letters;
gridrow=row;
gridcol=col;
letters= letters.toUpperCase();
array= new String[row][col];
int character=0;
for(int rowNum =0; rowNum<row; rowNum++){
for(int colNum=0; colNum<col; colNum++){
array[rowNum][colNum] = letters.charAt(character) + "";
character++;
}
}}}
public String toString(){
String grid= "";
for(int index=0; index<gridrow; index++){
for(int index2=0; index2<gridcol; index2++){
grid+= array[index][index2]+ " ";
}
grid+= "\n";
}
return grid;
}
}
答案 1 :(得分:0)
然后我必须使用toString方法打印它,但我不能 访问toString中的数组。
在你的类顶部的某个地方声明一个如下数组:
String globalArray[][];
在wordSearch方法的右括号之前执行以下操作:
globalArray = array; // point it to the local array
然后在您的toString()
方法中,您可以访问globalArray。
答案 2 :(得分:0)
array
应该是实例变量而不是局部变量。通过这种方式,可以从您班级中的其他方法访问它。
您可以在此处找到有关实例和局部变量之间差异的更多信息:https://stackoverflow.com/a/2088370/6245535
例如:
public class WordSearch {
private String array[][]; // declare as instance variable
public WordSearch (int row, int col, String letters) {
if (letters.length() == row * col) {
gridletters = letters;
gridrow = row;
gridcol = col;
letters = letters.toUpperCase();
array = new String[row][col]; // initialize the instance variable
int character = 0;
for (int rowNum = 0; rowNum < row; rowNum++) {
for (int colNum = 0; colNum < col; colNum++) {
array[rowNum][colNum] = letters.charAt(character) + "";
character++;
}
}
}
}
@Override
public String toString() {
String grid= "";
for(int index = 0; index < gridrow; index++) {
for(int index2 = 0; index2 < gridcol; index2++) {
grid += array[index][index2]+ " ";
}
grid += "\n";
}
return grid;
}
}