2013-03-15 74 views
-1

以及我來到這裏如何捕獲輸出的Java

static void snake(String u[][]){ 
     for(int i=0; i<u.length; i++){ 
      if(i%2==0){ 
       for(int j=0; j<u[i].length; j++){ 
        String asli = u[i][j]; 
        System.out.print(asli+""); 
       } 
      }else 
       for(int j=u[i].length-1; j>=0; j--){ 
        String asli = u[i][j]; 
        System.out.print(asli+""); 

       } 
      } 


     } 

我的代碼那裏是閱讀,我之前創建一個數組我的代碼。它將從右到左讀取蛇形路徑中的數組,然後在下一行中從左到右讀取數據,依此類推。

我會調用這個方法在我的代碼是這樣的:

snake(matrix); 

,這樣我之前創建的陣列將繼續在此方法。

它會創建一個像「asdbasdbasdbsad」這樣的輸出,並且我想要捕獲那個... 我嘗試了printstream,但它沒有工作。 輸出,我需要他們繼續在我的另一個代碼。我無法讓他們正確。 它是任何方法,而不是先將它們保存到一個文件,然後在下一個方法中讀取文件? 是否可以應用於其他類似的邏輯方法? 或者是否有可能將像我的代碼那樣的數組轉換爲字符串? 對不起我的英文,英文不是我的母語。我會感謝任何幫助,並感謝之前..

我使用npinti代碼,它的工作。

static String ular(String u[][]){ 
     StringBuilder code2 = new StringBuilder(); 

     for(int i=0; i<u.length; i++){ 
      if(i%2==0){ 
       for(int j=0; j<u[i].length; j++){ 
        String asli = u[i][j]; 
        System.out.print(asli+""); 
        code2.append(asli); 
        //System.out.print(asli+""); 

       } 
      }else 
       for(int j=u[i].length-1; j>=0; j--){ 
        String asli = u[i][j]; 
        System.out.print(asli+""); 
        code2.append(asli); 
        //System.out.print(asli+""); 

       } 
      } 
     return code2.toString(); 


    } 
+0

「我需要他們繼續在我的另一個代碼」和「是它的任何方法,而不是先把它們保存到一個文件,然後在下一個方法中讀取文件?你已經在asli String中使用了,所以你可以使用return或者將它加載到class屬性中,這樣它對其他其他成員在你的類中將是可見的,這是你的什麼? – emecas 2013-03-15 07:16:52

+0

System.setOut(outStream); – 2013-03-15 07:17:18

+0

好,謝謝你2.我已經明白了。謝謝你的關心。原諒我的英語,這不是我的母語.. – rizal 2013-03-15 08:18:01

回答

1

你可以做什麼是使你的方法return無論它打印在String或一些Collection的形式。

舉例來說,你可以這樣做:

static String snake(String u[][]){ 
    StringBuilder sb = new StringBuilder(); 
    for(int i=0; i<u.length; i++){ 
     if(i%2==0){ 
      for(int j=0; j<u[i].length; j++){ 
       String asli = u[i][j]; 
       System.out.print(asli+""); 
       sb.append(asli + ","); 
      } 
     }else 
      for(int j=u[i].length-1; j>=0; j--){ 
       String asli = u[i][j]; 
       System.out.print(asli+""); 
       sb.append(asli + ","); 
      } 
     } 
     return sb.toString(); 
    } 

這將返回一個逗號分隔String,你可以在你的程序在以後使用像這樣:

String[][] u = ... 
String result = snake(u); 

編輯:這是另一種方式你可以去它:

static List<String> snake(String u[][]){ 
    List<String> list = new ArrayList<String>(); 
    for(int i=0; i<u.length; i++){ 
     if(i%2==0){ 
      for(int j=0; j<u[i].length; j++){ 
       String asli = u[i][j]; 
       System.out.print(asli+""); 
       list.add(asli); 
      } 
     }else 
      for(int j=u[i].length-1; j>=0; j--){ 
       String asli = u[i][j]; 
       System.out.print(asli+""); 
       list.add(asli); 
      } 
     } 
     return list; 
    } 

而你這樣稱呼它:

String[][] u = ... 
List<String> moves = snake(u); 
+0

感謝您的關注..我將嘗試您應用的兩個代碼。如果它有效,我會在這裏發佈。非常感謝你.. – rizal 2013-03-15 07:54:06

+0

好,非常感謝你,npinti。真的行。我正在使用你的第一種方法,就是這樣。再次,謝謝你.. – rizal 2013-03-15 08:10:36

+0

@rizal:很高興它的工作。如果此答案解決了您的問題,請將其標記爲如此。這將顯示在您的統計數據上,這反過來會激勵其他用戶回答您將來可能遇到的任何其他問題。 – npinti 2013-03-15 08:14:55

2

而不是打印結果,返回它;

static String snake(String u[][]) { 
    StringBuilder builder = new StringBuilder(); 
    for (int i = 0; i < u.length; i++) { 
     if (i % 2 == 0) { 
      for(int j = 0; j < u[i].length; j++) { 
       String asli = u[i][j]; 
       builder.append(asli); 
      } 
     } 
     else 
      for (int j = u[i].length - 1; j >= 0; j--) { 
       String asli = u[i][j]; 
       builder.append(asli); 
      } 
     } 
    } 
    return builder.toString(); 
} 
+0

不要忘記方法簽名的變化;) – npinti 2013-03-15 07:17:44

+0

只需注意到並修復它。謝謝。 – 2013-03-15 07:18:40

+0

謝謝。我會嘗試你在這裏發佈的任一代碼。我會稍後再試,並再次感謝您的關注 – rizal 2013-03-15 07:55:46