如何在Java中捕获输出

时间:2013-03-15 07:10:11

标签: java arrays output

我在这里得到了我的代码

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();


    }

2 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分: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);