我的数独求解方法存在问题.该计划的工作方式如下; 当电路板启动时,它是空的,用户在电路板上添加了几个数字,然后点击一个Solve按钮,程序试图解决它.如果我将相同的数字放在同一行中,一切正常.因此,如果用户添加1,1,0,0 ... 0.在拼图中它无法解决它,因为它的两个1彼此相邻并且将继续尝试找到一个沉闷,即使它是无法解决的难题.但是,如果它们都是0(空),它将立即解决它,就像Id在左上角放置1和2一样.如果我只是在其中放入一些随机数将检测到它无法解决(或者如果它是一个有效的谜题将解决它)
我正在考虑说什么theNumber == (row, col) equals thenNumber == (row+1, col),它应该return false是因为它是一个重复的数字.
这是我试图在solve方法中添加的代码,显然没有成功.
if ((puzzle.getNum(row, col) == a) == (puzzle.getNum(row + 1, col) == a)) {
return false;
}
Run Code Online (Sandbox Code Playgroud)
非常感谢帮助
我工作的一个数独解算器,我试图限制量的数字,用户可以进入细胞,以及只能够输入数字,目前还接受信件.它的工作原理如下:如果用户输入"11125455876",它将只使用输入的最后一个数字(在本例中为"6").我想将用户可以输入单个单元格的数量限制为1,并且只接受数字1-9.我不确定我该怎么做.所以也许它只会覆盖以前的数字或者其他东西,如果我按一个字母键作为"a"就不会发生任何事情.
这是我的代码:
public PanelGUI(int size) {
super(size);
NumberFormat f = NumberFormat.getInstance();
f.setMaximumIntegerDigits(1);
f.setMinimumIntegerDigits(0);
f.setGroupingUsed(false);
cells = new JTextField[size][size];
panel.setLayout(new GridLayout(size, size));
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
cells[i][j] = new JFormattedTextField(f);
cells[i][j].setEditable(true);
cells[i][j].setFont(boldFont);
cells[i][j].setBorder(BorderFactory.createMatteBorder(1, 1, 1,
1, Color.white));
cells[i][j].setHorizontalAlignment(JTextField.CENTER);
panel.add(cells[i][j]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我正在使用number format.
我正在做一个练习,我需要实现一个课程,并且很难理解解释.
这是解释/练习:
* Adds all of the elements in the specified set, for which it is
* possible, to this set.
* post: all elements, for which it is possible, in the
* specified set are added to this set.
* @return true if this set changed as a result of the call
Run Code Online (Sandbox Code Playgroud)
这就是答案
public boolean addAll(SimpleSet<? extends E> s) {
Iterator<? extends E> it = s.iterator();
boolean changed = false;
while (it.hasNext()) {
changed = add(it.next());
}
return changed; …Run Code Online (Sandbox Code Playgroud)