107054600
003008529
000000070
004905100
800700900
012003000
700000006
200609004
036010000
这些文件以这种方式存储数独谜题。
我必须能够将这些谜题读入2d int数组和2d Jlabel数组。
仅在读入Int数组时有效。但是,当我尝试使用for循环处理的当前数字分配j Label的图标值时,我得到此编译器错误:
构造函数javax.swing.JLabel(int)未定义
为什么会这样?
相关代码如下:
JLabel[][] gridLabels = new JLabel[9][9];
int [][] grid = new int [9][9]; // Game Array
try {
String fileName1 = new Scanner(new File("./temp.txt")).useDelimiter("\\Z").next();
Scanner fin;
fin = new Scanner( new File(fileName1));
//Reads in the puzzle from a temporary text file
for(int row=0; row<9; row++)
{
String line = fin.next();
for(int col=0; col<9; col++)
{ grid[row][col] = line.charAt(col)-'0';
gridLabels[row][col] = new JLabel(line.charAt(col)-'0'); //PROBLEM HERE//
}
}
}
catch (FileNotFoundException exception)
{System.out.println("Incorrect Selection"); // Catches incorrect selection
}
catch (NoSuchElementException exception)
{System.out.println("No Such Element");
}
答案 0 :(得分:1)
在javax.swing.JLabel
的构造函数中,您可以传递String
但不传递int
。
您应该将int
转换为String
,然后再将其传递给Label
构造函数。
您可以将int
转换为String
String.valueOf(i)
。
查看here进行转化
答案 1 :(得分:0)
line.charAt(col)-'0'
的结果是int
,错误表明JLabel
没有任何带int
参数的构造函数。
试试new JLabel(String.valueOf(line.charAt(col)-'0'))
。