0
107054600
003008529
000000070
004905100
800700900
012003000
700000006
200609004
036010000

这些文件以这种方式存储数独谜题。

我必须能够将这些谜题读入 2d int 数组和 2d Jlabel 数组。

它在单独读入 Int 数组时起作用。但是,当我尝试使用 for 循环正在处理的当前编号分配 j 标签的图标值时,我收到此编译器错误:

构造函数 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");
  }
4

2 回答 2

1

在构造函数中,javax.swing.JLabel您可以传递 aString但不能传递int. 您应该在将其传递int给构造函数String之前将其转换为。Label您可以进行从intStringas 的转换String.valueOf(i)

在这里寻找转换

于 2012-10-24T06:26:59.210 回答
0

的结果line.charAt(col)-'0'是一个int并且错误说JLabel没有任何带int参数的构造函数。

试试new JLabel(String.valueOf(line.charAt(col)-'0'))

于 2012-10-24T06:27:08.537 回答