Я работаю над этим заданием и нахожусь в тупике, и прежде чем я смогу двигаться дальше, мне нужно его решить.
Я создаю программу, которая позволяет пользователю объявлять размер доски, принимать размер этой доски и заполнять квадрат, состоящий из "O" в таком размере. в конечном итоге это будет снова изменено, чтобы позволить пользователю вводить координаты x и y, и x появится в этой точке. Это только первая часть задания, которую я просто застрял здесь, прежде чем я смогу перейти к управлению конечным результатом. У меня есть вход вниз, и я считаю, что у меня есть массив, умноженный на вход сам по себе, гарантируя квадрат,
где я застрял, это распечатать О в квадрате.
например, пользовательские входы. 5 для системы размера платы должны печатать
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
Я пробовал проверять свой учебник и Google и т.д., И не нашел способ сделать это, что работает.
вот мой код
import java.util.Scanner;
import java.util.*;
import java.io.*;
public class Board {
@SuppressWarnings("empty-statement")
public static void main(String[] args) throws IOException
{
// declares brdsz for board size total, n for input, xco and yco for later date
int brdsz = 0;
int n = 0;
int xco = 0;
int yco = 0;
int x = 0;
System.out.println("The BOARD =version 1.00= (enter -1 to quit)");
System.out.println("===========================================");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.print("Please enter the side length of the board:");
n = Integer.parseInt(br.readLine());
brdsz = n * n;
int[] coodArray = new int[brdsz];
Arrays.fill(coodArray, 'O');
System.out.println("Creating " + n + " X " + n + " board...");
System.out.print("Please enter the x-coordinate: ");
xco = Integer.parseInt(br.readLine());
System.out.print("Please enter the y-coordinate: ");
yco = Integer.parseInt(br.readLine());
}
}
присваивание указывает, что это должно реплицировать 2d-плату с использованием 1d-массива
на данный момент я пытаюсь просто распечатать основной вывод, и я буду добавлять мои операторы if для дополнительных условий в более позднее время.
здесь представлен образец
BOARD = версия 1.00 = (введите -1 для выхода)
========================================
Введите боковую длину доски: 5 [enter]
Создание платы 5 x 5...
Готово.
Введите координату x: 3 [enter]
Введите y-координату: 2 [enter]
Место маркировки (3, 2)...
OOOOO
OOXOO
OOOOO
OOOOO
OOOOO
========================================
Введите x-координату: 4 [enter]
Введите y-координату: 1 [enter]
Место маркировки (4, 1)...
OOOXO
OOXOO
OOOOO
OOOOO
OOOOO
========================================
Введите координату x: 3 [enter]
Введите y-координату: 2 [enter]
Место (3, 2) уже отмечено...
OOOXO
OOXOO
OOOOO
OOOOO
OOOOO
========================================
по сути, я пытаюсь сделать, если вы введете 5 под боковую длину, он напишет массив длиной 25 (5 * 5), заполненный буквой O
пример значений массива 0-4 в строке 1 5-9 в строке 2 и т.д.
Вам нужен 2D-массив
Например, предположим, что x = new int[3][4]
, x[0]
, x[1]
и x[2]
являются одномерными массивами и каждый содержит четыре элемента, как показано на рисунке x.length
3
и x[0].length
, x[1].length
и x[2].length
- 4
Как перемещаться и настраивать 2D-массив, вы можете следовать следующему образцу в качестве синей печати:
2D-массив не является полностью необходимым (я не использовал их много), но они могут быть полезными по сравнению с сохранением массива 1D.
Для использования массива 1D он будет работать следующим образом (например, пользователь вводит 5 для размера платы). Вам нужно будет не отставать от размера (или ширины и высоты)
int[] myArray = new int[size * size]; // or if specified, it can be new int[width * height]
Затем, чтобы найти способ добраться до точки, выполните следующее:
int x = 3;
int y = 4;
int point = myArray[x + y * width];
То, что myArray[x + y * width]
будет делать, это указать вам точку в массиве с предоставленными x и y, а верхний левый угол - (0, 0):
[ O O O O O O O O O O O O O O O O O O O O O O O X O ]
O O O O O
O O O O O
O O O O O
O O O O O
O O O X O
Тогда, если x = 2
& y = 0
мы получим:
[ O O X O O O O O O O O O O O O O O O O O O O O O O ]
O O X O O
O O O O O
O O O O O
O O O O O
O O O O O
Это работает, потому что массив перемещается в соответствии с шириной. Итак, если x равно 5, а y равно 0, это будет выглядеть так:
[ O O O O O X O O O O O O O O O O O O O O O O O O O ]
O O O O O
X O O O O
O O O O O
O O O O O
O O O O O