2015-11-24 4 views
3

Мне нужно использовать массив 1D для создания окна. имейте в виду, что я НЕ допускаю использования 2D-массива.Как печатать элементы массива 1D в поле N x N

до сих пор вот мой код:

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, а O переключится на X. Я просто не уверен, как разделить массив так, чтобы он печатался по мере необходимости. моя программа просто выполняет итерации элементов массива и выводит их в одну строку ...

+0

Перейти до 'Board.length' и сделать внутри' if ((i% N) == 0)) System.out.println(); 'и при создании массива char вам не нужно будет делать char [] Board = new char [N * N]; 'поскольку вы хотите, чтобы он был' 16' длиной – 3kings

+0

У меня есть другой метод ... InputNumber(); который создает желаемое число для массива. также я использовал char [] Board, потому что я не был уверен, как еще распечатать символы «O». – Ronald

ответ

0

Вы должны создать п * п массива ех: - если пользователь вводит 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]); 
} 
+0

Я заявлял выше, что мне не разрешено использовать 2 D массивы – Ronald

+0

@RonLevitzky мой плохой я этого не видел, я обновил ответ –

+0

приветствия mate вы решили мою проблему – Ronald

0

Я считаю, что вы ищете что-то вроде этого?

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 
+0

Это хороший ответ, но я забыл упомянуть, что я в классе comp sci, и мы не перешли через Array.fill или другие методы. просто ищет самый простой ответ. – Ronald

0

Пусть 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); 
} 

Вышеуказанный метод возвращает индекс (x, y) в массиве 1D. Итак, вы только что использовали массив 1D, чтобы действовать как поле N * N.

+0

это не решило мою проблему, но вы предложили дополнительную помощь по другому методу , большое спасибо! – Ronald

Смежные вопросы