繁体   English   中英

如何将1D阵列的元素打印到N×N框中

[英]how to print elements of a 1D array into a N x N box

我必须使用一维数组来创建一个盒子。 请记住,我不允许使用2D数组。

到目前为止这是我的代码:

String input = "";

    int N = InputNumber(input);
    char [] Board = new char[N];
    int M = (int) Math.sqrt(N);

    System.out.println("Printing " + (M) + " x " + (M) + " board...");

    char A = 'O';
    for(int i = 0; i < Math.sqrt(Board.length); i++)
    {
        Board[i] = A;
        System.out.println(Board[i]);
    }

用户选择一个数字,然后程序创建一个框。 所以例如如果N = 4,程序应该创建一个16元素数组,打印方式如下:

OOOO
OOOO
OOOO
OOOO     

这个盒子将被视为x和y坐标,并且将添加其他方法,其中用户输入x和y坐标,O将切换到X.我只是不太确定如何拆分数组以便它会根据需要打印。 我的程序只是迭代数组的元素并在一行中打印出来...

我相信你在找这样的东西?

int n = 4; //change this back to what you had for user input and stuff
char [] board = new char[n*n];
Arrays.fill(board, 'O');
int m = (int) Math.sqrt(n); //no idea why you need this?

System.out.println("Printing " + (n) + " x " + (n) + " board...");
for(int i = 0; i < board.length; i++)
{
    if((i%n) == 0)
        System.out.println();
     System.out.print(board[i]);
}

输出:

Printing 4 x 4 board...

OOOO
OOOO
OOOO
OOOO

您必须创建n * n数组ex: - 如果用户输入4,则数组应为4 * 4 = 16个元素

int N = InputNumber(input);
char A = 'O';
char [] board = new char[N*N];
int m = (int) Math.sqrt(N); //i don't know why you need this

System.out.println("Printing " + N + " x " + N + " board...");
for(int i = 0; i < board.length; i++)
{
    board[i] = A;
    if((i%N) == 0){
        System.out.println();
    }
     System.out.print(board[i]);
}

让1D数组只包含您的值,现在使用坐标指向特定值此方法运行良好:

// Using 0-index based representation.
// if user entered (1,3) i.e. 0th row and 3rd element(2nd index element)
public int getPosition(int x,int y,int N)
{
   int val1 = (x-1) * N;
   int val2 = y;
   int targetIndex = val1 + val2;   // this will point to 3rd value (index will be 2) in array

   return (targetIndex -1 );
}

上述方法将返回1D数组中的(x,y)索引。 所以,你刚刚用一维数组作为N * N的盒子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM