数独Permuter计划帮助!!二维数组(Java ?!)

时间:2010-11-18 03:06:16

标签: java arrays sudoku

  

可能重复:
  Help With Java Sudoku Permuter Program using Two Dimensional Array?

我必须创建一个程序,将数据的9行显示为9个9位数字,然后提示用户对数独进行6次操作之一。然后我们必须在每次用户执行操作时输出数独。这是一个如何运行的样本:

Welcome to Sudoku Permuter. 

   C C C C C C C C C 
   1 2 3 4 5 6 7 8 9 
R1 0 8 0 4 0 2 0 6 0 
R2 0 3 4 0 0 0 9 1 0 
R3 9 6 0 0 0 0 0 8 4 
R4 0 0 0 2 1 6 0 0 0 
R5 2 0 0 0 0 9 6 0 0 
R6 0 1 0 3 5 7 0 0 8 
R7 8 4 0 0 0 0 0 7 5 
R8 0 2 6 0 0 0 1 3 0 
R9 0 9 0 7 0 1 0 4 0 

(0 denotes a blank) 

Enter 1 to swap two rows in a panel 
Enter 2 to swap two columns in a panel 
Enter 3 to swap two row panels 
Enter 4 to swap two column panels 
Enter 5 to swap two numbers 
Enter 0 to end: 

假设用户输入3(交换两个行面板)。这会出现:

输入行面板(1-3)进行交换:3 1 它将交换行面板1和3,这将是输出:

   C C C C C C C C C 
   1 2 3 4 5 6 7 8 9 
R1 8 4 0 0 0 0 0 7 5 
R2 0 2 6 0 0 0 1 3 0 
R3 0 9 0 7 0 1 0 4 0 
R4 0 0 0 2 1 6 0 0 0 
R5 2 0 0 0 0 9 6 0 0 
R6 0 1 0 3 5 7 0 0 8 
R7 0 8 0 4 0 2 0 6 0 
R8 0 3 4 0 0 0 9 1 0 
R9 9 6 0 0 0 0 0 8 4 

第1-3行已使用第7-9行切换。 假设用户输入5.这就出现了:

输入两个数字:2 8 原来的数独再次输出,除了2和8都被切换。

   C C C C C C C C C 
   1 2 3 4 5 6 7 8 9 
R1 0 2 0 4 0 8 0 6 0 
R2 0 3 4 0 0 0 9 1 0 
R3 9 6 0 0 0 0 0 2 4 
R4 0 0 0 8 1 6 0 0 0 
R5 8 0 0 0 0 9 6 0 0 
R6 0 1 0 3 5 7 0 0 2 
R7 2 4 0 0 0 0 0 7 5 
R8 0 8 6 0 0 0 1 3 0 
R9 0 9 0 7 0 1 0 4 0 

如果用户输入1,则会出现一些说法

输入两行(1-9)进行切换: 无论用户输入哪一行,都会交换这两行,并再次输出数独。如果用户输入2,则类似,除了将切换2列。同样,如果用户输入4,则会切换两个列面板。

我们应该使用这样的二维数组:

int [] [] sudoku = new int [10] [10]


好的,我很抱歉这么久了!但这是我到目前为止所拥有的。我遇到了一些问题。首先,我知道如何交换行,但由于数据是硬编码的,我不知道如何检索数字。我一般都遇到阵列问题,所以这个程序非常困难。我已经工作了至少2个小时,这就是我的全部。我还必须在提示用户之前打印数独,但我不知道如何。我试图做System.out.println(sudoku),但随机字符出现了。我也不知道如何显示C1,C2,C3等和R1,R2,R3等。任何建议表示赞赏!这是我的(可能很糟糕的)代码:

import java.util.Scanner; 公共课SudokuPermuter {   public static void main(String [] args){       扫描仪输入=新扫描仪(System.in);       System.out.println(“欢迎使用Sudoku Permuter。\ n”);

  int [] [] sudoku = {
      { 0, 8, 0, 4, 0, 2, 0, 6, 0 },
      { 0, 3, 4, 0, 0, 0, 9, 1, 0 },
      { 9, 6, 0, 0, 0, 0, 0, 8, 4 },
      { 0, 0, 0, 2, 1, 6, 0, 0, 0 },
      { 2, 0, 0, 0, 0, 9, 6, 0, 0 },
      { 0, 1, 0, 3, 5, 7, 0, 0, 8 },
      { 8, 4, 0, 0, 0, 0, 0, 7, 5 },
      { 0, 2, 6, 0, 0, 0, 1, 3, 0 },
      { 0, 9, 0, 7, 0, 1, 0, 4, 0 }
    };

  System.out.println(sudoku);
  System.out.println();

  System.out.print("Enter 1 to swap two rows in a panel\n" +
  "Enter 2 to swap two columns in a panel\n" +
  "Enter 3 to swap two row panels\n" +
  "Enter 4 to swap two column panels\n" +
  "Enter 5 to swap two numbers\n" +
  "Enter 0 to end: ");

  int choice = input.nextInt();
  if (choice == 1) {
      System.out.print("Enter 2 rows (1-9) to swap: ");
      int r1 = input.nextInt();
      int r2 = input.nextInt();
    }
  else if (choice == 2) {
      System.out.print("Enter 2 columns (1-9) to swap: ");
      int c1 = input.nextInt();
      int c2 = input.nextInt();
    }
  else if (choice == 3) {
      System.out.print("Enter 2 row panels (1-3) to swap: ");
      int rp1 = input.nextInt();
      int rp2 = input.nextInt();
    }
  else if (choice == 4) {
      System.out.print("Enter 2 column panels (1-3) to swap: ");
      int cp1 = input.nextInt();
      int cp2 = input.nextInt();
    }
  else if (choice == 5) {
      System.out.print("Enter 2 numbers (1-9) to swap: ");
      int num1 = input.nextInt();
      int num2 = input.nextInt();
    }
  else if (choice == 0) {
      System.exit(0);
    }
  else {
      System.out.println("Invalid input. Try again");
    }
}

}

0 个答案:

没有答案