[英]Sudoku - java. I am trying to see if my row is complete or not. it cannot have a number repeated
I have been working on this code for a while and i am stuck on this code. 我已经在这段代码上工作了一段时间,而我一直坚持在这段代码上。 I am not sure what i am doing wrong. 我不确定自己在做什么错。 If someone could point me on the right direction 如果有人能指出我正确的方向
this is what i need to code followed by the code below it : 这是我需要编写代码,然后是下面的代码:
/**
* This method determines whether the ints 1-9 are present exactly
* once in each column. Sets valSeen[i] = 1 if it sees i. If at any
* point valSeen[i] is already 1, the rows are not complete because of
* duplicate entries.
*
* If game[x][y] == -1, there is a blank entry so the row cannot be complete.
*
* @param valSeen: an array of ints that serve as flags to indicate whether
* their entry has been seen before or not.
*
* returns: true if each digit 1-9 is present in the column exactly once, else false
**/
public boolean rowsComplete(int[] valSeen)
{
// Write the appropriate nested loops to check the rows.
int temp = 0;
boolean val = false;
for(int i = 0; i < SIZE; i++) { //row [i]
for(int j = 0; j < SIZE; j++) { //columns [j]
temp = game[i][j];
if( temp != -1) { //make sure the index of the row is not empty
if(valSeen[temp] != 1) { //make sure the number was not previously
valSeen[temp] = 1;
val = true;
}
else {
val = false;
}
}
else
val = false;
}
setZero(valSeen); //sets all the indexes of valseen to zero aFter each row
}
// Remember to reset valSeen to 0 after each row.
return val; // Change this, placeholder so your code will compile
}
As noted in the other answer, you might have the indexing into your flag array wrong, because of java's zero-based indexing. 如另一个答案中所述,由于Java的从零开始的索引,您可能将对索引数组的索引设置为错误。
But there are other problems with the code as it is. 但是,代码本身仍然存在其他问题。
If the last row is valid, your method will return true based on its validity, regardless of having seen an invalid row earlier. 如果最后一行有效,则您的方法将基于其有效性返回true,而不管先前是否看到无效的行。
You would do better to set the result true before the loop, change it to false as appropriate, and never set it true again. 您最好在循环之前将结果设置为true,将其适当地更改为false, 再也不要再次将其设置为true。
Maybe you are going out of boundaries with the variable temp. 也许您在temp可变范围之外。 try setting 尝试设置
temp = game[i][j] - 1
Normally your numbers will be from 1 to 9 in game[][] so temp will also receive 1 to 9 and then you enter an array of size 9 to index 9, but you need to remember the count starts from zero so you actually want index 8 通常,您的数字在game [] []中将是1到9,因此temp也会收到1到9,然后您输入一个大小为9的数组到索引9,但是您需要记住计数从零开始,所以您实际上想要索引8
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.