2014-02-16 48 views
0

我無法將行移動到左側。網格來自我創建的input.txt文件。我創建了應該將行移動到左側的方法RL。移動我的網格中的行

這是我迄今爲止

while(true){ 
     showBoard(); 
     Scanner kbScan= new Scanner(System.in); 
     System.out.println(""); 
     System.out.println("Input number from 1 to 5: "); 
     int i = kbScan.nextInt(); 
     System.out.println("Input move command: "); 
     String moveName = kbScan.next(); 
     //If/ else statements to dictate which method to call 
     if(moveName.equals("rl")){ 

      RL(i-1, board); 
     } 
     else if(moveName.equals("rr")){ 

      RR(i+1); 
     } 
     else if(moveName.equals("ru")){ 

      RU(i-1); 
     } 
     else if(moveName.equals("rd")){ 

      RD(i-1); 
     } 
     else if(moveName.equals("+r")){ 

      plusRow(i-1); 
     } 
     else if(moveName.equals("-r")){ 

      minusRow(i-1); 
     } 
     else if(moveName.equals("+c")){ 

      plusColumn(i-1); 
     } 
     else if(moveName.equals("-c")){ 

      minusColumn(i-1); 
     } 
     else{ 
      System.out.println(""); 
      System.out.println("Please follow instructions"); 
      System.out.println(""); 
     } 
    } 
    // In case user inputs # greater than 5 


} 
public static void showBoard(){ 
    for(int row = 0; row < board.length; row++){ 
     for(int col = 0; col<board.length;col++){ 
      System.out.print(board[row][col] + " "); 
      System.out.print(" "); 
     } 
     System.out.println(" "); 
    } 
} 

public static void RL(int userPosition, int[][] board){ 
    for(int row = 0; row< board.length ;row++){ 
     for(int col = 0; col<board.length;col++){ 
      int value = board[row][col]; 

     } 
    } 

} 

這是我得到的輸出:

Input number from 1 to 5: 
    1 
    Input move command: 
    rl 

    1 -2 1 0 0 
    -1 0 4 2 0 
    0 -4 1 -1 0 
    0 1 -1 -1 -2 
    0 -3 1 -1 0 

這是我想要得到的輸出:

-2 1 0 0 1 
    -1 0 4 2 0 
    0 -4 1 -1 0 
    0 1 -1 -1 -2 
    0 -3 1 -1 0 

回答

0

那是因爲RL方法沒有做任何事情。它只是創建臨時變量名稱temp。

編輯:這會將一個數組向左旋轉,包圍第一個值。現在你所需要做的就是將它應用到二維數組中,這是微不足道的(匹配輸入)。

int[] arr = {1,2,3,4,5,6}; 

System.out.println("Before:"); 
for (int i = 0; i < arr.length; i++) { 
    System.out.print(arr[i] + ", "); 
} 
System.out.println(): 


if (arr.length > 0) { 
    int first = arr[0]; 

    for (int i = 0; i < arr.length-1; i++) { 
     arr[i] = arr[i+1]; 
    } 

    arr[arr.length-1] = first; 
} 

System.out.println("After:"); 
for (int i = 0; i < arr.length; i++) { 
    System.out.print(arr[i] + ", "); 
} 
+0

我知道該方法現在沒有做任何事情。我嘗試了System.out.print(board [rows-1] [col]);但是現在我很困惑。我離得很遠。 – user124557

+0

因此,對於數組中的每一行,您都想將值移到左側,如果需要的話可以環繞一下? – Smitty

+0

我正在嘗試將用戶選擇的行移到左側。 – user124557