2016-04-16 8 views
1

私のパズルの再生部分は何も返されません、私は動作する他の領域で同様のコードを使用しました。私は何の誤りもないので、何が間違っているのかわからない、私は '=='を使って試してみたが、別にパズルを出力したが、何も起こらなかった。どんな助けも役に立つでしょう。パズルはループを使用する必要があり、パズルが解決されたときにゲームを終了する必要がありますが、前後に何を使用するかわからない場合は、こちらのヘルプも役立ちます。私のパズルの '再生'の部分は何も返されません

package assignment; 

import java.util.Scanner; 

import static java.util.Scanner.*; 


public class puzzle { 

    public static final int N = 4; 
    public static final int NUMBER_OF_ROTATIONS = 5; 

    public static void main(String[] args) { 
     int[][] puzzle = new int[N][N]; 
     reset(puzzle); 
     test(puzzle); 
     reset(puzzle); 
     scramble(puzzle); 
     System.out.println("### Testing puzzle game play\n"); 
     play(puzzle); 
    } 

    public static void print(int[][] puzzle) { 
     for (int[] row : puzzle) { 
      for (int elem : row) { 
       System.out.printf("%4d", elem); 
      } 
      System.out.println(); 
     } 
     System.out.println(); 
    } 

    public static void test(int[][] puzzle) { 
     System.out.println("### Testing reset method\n"); 
     print(puzzle); 
     System.out.println("### Testing rotate methods\n"); 
     print(puzzle); 
     for (int i = 0; i < N; i++) { 
      System.out.println("### rotateColumn(" + i + ")\n"); 
      rotateColumn(puzzle, i); 
      print(puzzle); 
      System.out.println("### rotateRow(" + i + ")\n"); 
      rotateRow(puzzle, i); 
      print(puzzle); 
     } 
     reset(puzzle); 
     System.out.println("### Testing random rotations\n"); 
     print(puzzle); 
     for (int i = 0; i < 5; i++) { 
      randomRotation(puzzle); 
      print(puzzle); 
     } 
    } 

    public static void reset(int[][] puzzle) { 
     for (int i = 0; i < N; i++) { 
      for (int j = 0; j < N; j++) 
       puzzle[i][j] = i * N + j; 
     } 
    } 

    public static void scramble(int[][] puzzle) { 
     for (int i = 0; i < NUMBER_OF_ROTATIONS; i++) { 
      randomRotation(puzzle); 
     } 
    } 


    // TODO: Implement method as specified in assignment brief 

    public static void rotateRow(int[][] arr, int row) { 

     int newRow = arr[row][arr.length - 1]; 
     int nextRow; 
     for (int IndexNo = 0; IndexNo < arr.length; IndexNo++) { 
      nextRow = arr[row][IndexNo]; 
      arr[row][IndexNo] = newRow; 
      newRow = nextRow; 
     } 

    } 


    // TODO: Implement method as specified in assignment brief 

    public static void rotateColumn(int[][] arr, int column) { 
     int newCol = arr[arr.length - 1][column]; 
     int nextCol; 
     for (int IndexNo = 0; IndexNo < arr.length; IndexNo++) { 
      nextCol = arr[IndexNo][column]; 
      arr[IndexNo][column] = newCol; 
      newCol = nextCol; 
     } 
    } 


    // TODO: Implement method as specified in assignment brief 

    public static void randomRotation(int[][] puzzle) { 

     int rowrandom = (int) (Math.random() * 3 + 1); 
     int colrandom = (int) (Math.random() * 3 + 1); 
     int option = (int) (Math.random() * 2 + 1); 

     if (option == 1) { 
      rotateRow(puzzle, rowrandom); 
     } else { 
      rotateColumn(puzzle, colrandom); 
     } 

    } 

    // TODO: Implement method as specified in assignment brief 

    static void play(int[][] puzzle) { 
     reset(puzzle); 
     print(puzzle); 

     for (int i = 0; i < 5; i++) { 
      randomRotation(puzzle); 
     } 
     print(puzzle); 


     System.out.println("enter row x or col x: "); 
     Scanner input = new Scanner(System.in); 
     String x = input.next(); 

     if (x.equals("row 0")){ 
      rotateRow(puzzle, 0); 
      print (puzzle); 

     } 
     if (x.equals("row 1")){ 
      rotateRow(puzzle, 1); 
      print(puzzle); 

     } 
     if (x.equals("row 2")){ 
      rotateRow(puzzle, 2); 
      print(puzzle); 

     } 
     if (x.equals("row 3")){ 
      rotateRow(puzzle, 3); 
      print(puzzle); 

     } 
     if (x.equals("col 0")){ 
      rotateColumn(puzzle, 0); 
      print(puzzle); 

     } 
     if (x.equals("col 1")){ 
      rotateColumn(puzzle, 1); 
      print(puzzle); 

     } 
     if (x.equals("col 2")){ 
      rotateColumn(puzzle, 2); 
      print(puzzle); 

     } 
     if (x.equals("col 3")){ 
      rotateColumn(puzzle, 3); 
      print(puzzle); 

     } 




    } 
} 
+0

を返す必要があります。戻り値は、実際の戻り値を参照しているか、printステートメントを探していますか?戻り値の型はなく、何も返さない。 – Afflicted

+0

メソッドは私たちに与えられたテンプレートでしたので、私は変更できませんので、私は実際にリターンを使用するとは思わない、ちょうどパズルを出力したい – sb33

答えて

2

。空白(例えば「行1」)を含むテキストを読むには、input.nextLine()

1

それがvoid宣言されているので、あなたのプレイ方法は、何も返さない、そして実際にあなたもreturn文を持っていません。

あなたは、のような方法を宣言する必要があります:あなたはinput.next()メソッドを使用する場合Scannerは最初の単語だけを読み込みます、パズルに関しては何も表示されないで

static int[][] play(int[][] puzzle) { 
    ... 
    return puzzle; 
} 
+0

メソッドがコードテンプレートの一部だったので私はそれを変更できるとは思わない – sb33

+0

@ Cyb3rFly3r私はopが、これを印刷するための関数を持っているので、何かを返すことについて単に混乱していると信じています。また、あなたのprintステートメントに問題がある場合は、それぞれのforループではなく、forループの標準を使って試してみてください。また、forループの添字を取り除いてください – Afflicted

関連する問題