【问题标题】:How to print a 2d array horizontally multiple times如何多次水平打印二维数组
【发布时间】:2018-04-27 01:39:18
【问题描述】:

我正在使用 java,我想根据用户输入多次水平打印二维数组。但是,我的阵列垂直打印,有人可以帮忙吗?

    n=3; //user input
    char[][] board = new char[2][3];
    char[][] f = new char[board.length][n * board[0].length];
    for (int i = 1; i < n + 1; i++) {
        int Start = (i * board[0].length) - board[0].length;
        int End = i * board[0].length;
        for (int row = 0; row < f.length; row++) {
            for (int col = nStart; col < nEnd; col++) {
                f[row][col] = board[row][col - nStart];
                System.out.print(f[row][col]);
            }
            System.out.println();
        }
    } 
For example board array = 
xx
xx
I would like 
xxxxxx
xxxxxx

【问题讨论】:

  • 删除System.out.println();?
  • 如果您只想在每个数字之间留一个空格,请将 System.out.println() 替换为 System.out.print(" ")。否则删除它。
  • 显示一个示例(在您的帖子中),说明您希望输出的样子。

标签: java arrays printing


【解决方案1】:

如果要水平打印二维数组,则必须在下一行之前重复打印行n 次:

int n = 3; // user input
char[][] board = new char[][] { { 'x', 'x', 'x' }, { '0', '0', '0' } }; //example board

for (int row = 0; row < board.length; row++)
{
    for (int i = 0; i < n; i++)
    {
        for (int col = 0; col < board[row].length; col++)
        {
            System.out.print(board[row][col]);
        }
        System.out.print("\t"); //arrays separated by tab
    }
    System.out.println();
}

输出:

xxx xxx xxx 
000 000 000 

希望对你有所帮助。

【讨论】:

  • 我刚刚删除了“\t”,它工作得很好。非常感谢。
【解决方案2】:

您的解决方案运行良好,只是您在代码的最后几行中犯了一个小错误。我认为您想使用 System.out.println() 在每个条目之间打印一个空格,但 println 在最后打印一个换行符。所以你的代码应该是这样的:

n=3; //user input
char[][] board = new char[2][3];
char[][] f = new char[board.length][n * board[0].length];
for (int i = 1; i < n + 1; i++) {
    int Start = (i * board[0].length) - board[0].length;
    int End = i * board[0].length;
    for (int row = 0; row < f.length; row++) {
        for (int col = nStart; col < nEnd; col++) {
            f[row][col] = board[row][col - nStart];
            System.out.print(f[row][col]);
        }
        System.out.print(" "); // Print a space between every single output
    }
}

或者,如果您根本不想要空格,请完全删除该行。或者将空格更改为逗号、点或您需要的任何内容。

【讨论】:

  • 感谢您的帮助
【解决方案3】:

删除复制的数组 f。 您需要的是在循环中交换行、列。

n=3; //user input
char[][] board = new char[2][3];
for (int j = 0; j < board[0].length; j++) {
    for (int i = 0; i < n ; i++) {
            System.out.print(board[i][j]);
            System.out.print(" ");
    }
    System.out.println();
}

【讨论】:

    猜你喜欢
    • 2011-03-02
    • 2013-10-03
    • 1970-01-01
    • 2020-11-17
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    相关资源
    最近更新 更多