📄 digitnumber.java
字号:
import java.util.Vector ;
class DigitNumber {
int number ;
DigitNumber(int number ) {
this.number = number;
}
public boolean updateValue() {
Area[] areas = searchAreasNotHaveCurrentnumber() ;
for(int i=0 ; i< areas.length ;i++ ) {
boolean[][] flags = areas[i].cannotSetValue(number) ;
int firstFalseIndex = getFirstFalseIndex(flags);
int lastFalseIndex = getLastFalseIndex(flags);
if (firstFalseIndex!=-1 && firstFalseIndex == lastFalseIndex ) {
AreaCellPosition cellPosition = new AreaCellPosition(firstFalseIndex) ;
areas[i].getCell(cellPosition).setValue(number) ;
return true ;
}
}
return false;
}
private int getFirstFalseIndex(boolean[][] flags ) {
for(int i=0;i<9;i++) {
AreaCellPosition cellPosition = new AreaCellPosition(i) ;
if (!flags[cellPosition.i][cellPosition.j]) return i ;
}
return -1;
}
private int getLastFalseIndex(boolean[][] flags ) {
for(int i=8;i>=0;i--) {
AreaCellPosition cellPosition = new AreaCellPosition(i) ;
if (!flags[cellPosition.i][cellPosition.j]) return i ;
}
return -1;
}
private Area[] searchAreasNotHaveCurrentnumber() {
Vector<Area> v = new Vector<Area>();
for(int i=0;i<3;i++)
for(int j=0;j<3;j++) {
Area area = new Area( new AreaPosition(i,j) ) ;
if (!area.hasElement(number)) v.add(area);
}
Area[] result = new Area[v.size()] ;
for( int i=0;i< result.length;i++) {
result[i] = v.get(i) ;
}
return result ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -