急求一Java编程答案!!!!求高手帮忙

我要做一个编程可以读取一个textfile,里面是一篇数独读取完了后,要检查这数独表对不对,也就是打横,打竖,以及3X3小九宫都是只用到了1-9数字各一次,或者说打横9个... 我要做一个编程可以读取一个text file,里面是一篇数独
读取完了后,要检查这数独表对不对,也就是打横,打竖,以及3X3小九宫都是只用到了1-9数字各一次,或者说打横9个数字的和等于45,打竖9个数字的和也等于45,3X3小九宫也等于45

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
public class ReadSudokuValuesIntoArray {
public static void main(String[] args) {
int[][] sudoku = new int[9][9];
Scanner sc = null;
try {
int i = 0, j = 0, count = 1;

sc = new Scanner(new File ("vaildsudoku.txt"));
while (sc.hasNextInt()) {
if ((count % 9) == 0) {
sudoku[i][j] = sc.nextInt();
count++;
i++;
j = 0;
} else {
sudoku[i][j++] = sc.nextInt();
count++;
}
}
}
catch (FileNotFoundException fnfe) {
System.out.println("No file found");
System.exit(1);
}
finally {
sc.close();
}
printArray(sudoku);
}

public static void printArray(int[][] array) {
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j]+ " ");
}
System.out.println();
}
}
}

读取那部分我已经有了,直接读取出来就这样
5 9 3 1 7 8 6 4 2
1 8 2 6 3 4 9 7 5
6 7 4 9 2 5 8 1 3
3 2 1 4 5 9 7 6 8
8 4 5 3 6 7 2 9 1
9 6 7 8 1 2 5 3 4
7 1 6 2 8 3 4 5 9
2 5 9 7 4 1 3 8 6
4 3 8 5 9 6 1 2 7
就是检查那部分做不好,请高手帮忙添加下面的static methods
public static boolean rowsAreValid(int[][] array)
public static boolean columsAreValid(int[][] array)
public static boolean regionsAreValid(int[][] array)
public static boolean puzzleIsValid()
检查正确了再print整个九宫格出来
感激不尽啦~~~~
展开
 我来答
纵浪书海
2012-09-27 · TA获得超过138个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:73.1万
展开全部
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
public class ReadSudokuValuesIntoArray {
static int sudokuArray[][] = new int[9][9];
public static int[][] readArray() {
int[][] sudoku = new int[9][9];
Scanner sc = null;
try {
int i = 0, j = 0, count = 1;
sc = new Scanner(new File("vaildsudoku.txt"));
while (sc.hasNextInt()) {
if ((count % 9) == 0) {
sudoku[i][j] = sc.nextInt();
count++;
i++;
j = 0;
} else {
sudoku[i][j++] = sc.nextInt();
count++;
}
}
} catch (FileNotFoundException fnfe) {
System.out.println("No file found");
System.exit(1);
} finally {
sc.close();
}
return sudoku;
}
public static void printArray(int[][] array) {
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
public static boolean rowsAreValid(int[][] array) {
for (int i = 0; i < array.length; i++) {// 每一行
for (int j = 0; j < array.length-1; j++) {
for (int k = j+1; k < array.length; k++) {
if (array[i][j] == array[i][k]) {
return false;
}
}
}
}
return true;
}
public static boolean columsAreValid(int[][] array) {
for (int i = 0; i < array.length; i++) {// 每一行
for (int j = 0; j < array.length-1; j++) {
for (int k = j+1; k < array.length; k++) {
if (array[j][i] == array[k][i]) {
return false;
}
}
}
}
return true;
}
public static boolean regionsAreValid(int[][] array){
int [][] arrayTemp=new int [1][9];
int index=0;
for(int i=0;i<8;i=i+3){
for(int j=0;j<8;j=j+3){
//3*3小区域
for(int m=0;m<3;m++)
for(int n=0;n<3;n++){
arrayTemp[0][index]=array[i+m][j+n];
index++;
}
index=0;
if(!rowsAreValid(arrayTemp)){
return false;
}
}
}
return true;
}
public static boolean puzzleIsValid(){
sudokuArray = readArray();
return rowsAreValid(sudokuArray)&&
columsAreValid(sudokuArray)&&
regionsAreValid(sudokuArray);
}
public static void main(String[] args) {
if (puzzleIsValid()) {
printArray(sudokuArray);
} else {
System.out.println("错误啦");
}
}
}
刚刚写的,看看吧~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
随心E谈
2012-09-27 · TA获得超过1009个赞
知道小有建树答主
回答量:491
采纳率:50%
帮助的人:140万
展开全部
/**把数组放进对应位置,看他是否集齐1~9
* 该方法也可以使用先排序
*/
public static boolean Valid(int[] array){
boolean temp[]=new boolean [9];

for(int i=0;i<9;i++)
temp[i]=false;
//把数组放进对应位置,看他是否集齐1~9
for(int i=0;i<9;i++)
{
if(array[i]>9||array[i]<1) return false;
temp[array[i]-1]=true;
}

boolean b=true;
for(int i=0;i<9;i++)
{
b= b && temp[i];
}

return b;
}
public static boolean rowsAreValid(int[][] array){
boolean b=true;
for(int i=0;i<9;i++){
b=b&&Valid(array[i]);
}
return b;
}
public static boolean columsAreValid(int[][] array){
boolean b=true;
int num[]=new int[9];
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
num[j]=array[j][i];
}
b=b&&Valid(num);
}
return b;
}
//3*3的化为1维
public static int[] arrayToLine(int[][] array,int m,int n){
int num[]=new int[9];
for(int i=0;i<3;i++)
for(int j=0;j<3;j++){
num[3*i+j]=array[m+i][n+j];
}
return num;
}
//各部分真假
public static boolean regionsAreValid(int[][] array){
boolean b=true;
int num[]=new int[9];

for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
num=arrayToLine(array,3*i,3*j);
}
b=b&&Valid(num);
}
return b;
}
//数独真假
public static boolean puzzleIsValid(int[][] array){
return rowsAreValid(array)&&
columsAreValid(array)&&
regionsAreValid(array);
}

打印美化的就自己来了.
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
剑贺拨吉RS
2012-09-29 · TA获得超过3443个赞
知道大有可为答主
回答量:8142
采纳率:0%
帮助的人:2736万
展开全部
日食??不解压安装,如果需要的话再次插件
此外,安全的Eclipse配置的环境,它可以被编译在记事本中
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我没有病
2012-09-27 · 超过54用户采纳过TA的回答
知道小有建树答主
回答量:259
采纳率:0%
帮助的人:170万
展开全部
。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
y522453910
2012-09-27
知道答主
回答量:23
采纳率:0%
帮助的人:6.3万
展开全部
好难啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式