一个d数组到可变大小java的矩阵

时间:2014-11-30 02:09:07

标签: java arrays

我正在完成这项任务,并且在某一点上难以接受,在我继续前进之前,我需要解决它。

我正在构建一个程序,允许用户声明一个电路板大小,占用该电路板尺寸并填充由该尺寸的“O”组成的正方形。最终将再次操作以允许用户输入x和y坐标,并且x将出现在该点处。这只是作业的第一部分我只是被困在这里才能继续操作最终结果我输入下来并且我相信我已经找到了数组,将输入乘以它将保证一个正方形,< / p> 我被卡住的地方是将它打印在正方形的O中。

示例 用户输入5作为电路板尺寸 系统应该打印出来

 OOOOO
 OOOOO
 OOOOO
 OOOOO
 OOOOO  

我已经尝试过查看我的教科书和谷歌等等,但没有办法做到这一点。

这是我的代码

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

  }
}

该赋值表明这必须使用1d数组复制2d板

截至目前我正在尝试打印基本输出,我将在稍后的时间内为其他条件添加if语句。

这是示例输出

BOARD =版本1.00 =(输入-1退出)
========================================
请输入电路板的边长:5 [输入]
创建5 x 5板...
完成。
请输入x坐标:3 [输入]
请输入y坐标:2 [输入]
标记位置(3,2)...
OOOOO
OOXOO
OOOOO
OOOOO
OOOOO
========================================
请输入x坐标:4 [输入]
请输入y坐标:1 [输入]
标记位置(4,1)...
OOOXO
OOXOO
OOOOO
OOOOO
OOOOO
========================================
请输入x坐标:3 [输入]
请输入y坐标:2 [输入]
位置(3,2)已标记为......
OOOXO
OOXOO
OOOOO
OOOOO
OOOOO
========================================

基本上我想要做的是如果你在边长下输入5,它会写一个25长度数组(5 * 5)填充字母O

示例数组值0-4第一行5-9在第二行等。

2 个答案:

答案 0 :(得分:1)

你需要一个2D数组

例如,假设x = new int[3][4]x[0]x[1]x[2]是一维的 数组,每个包含四个元素,如图x.length3所示,和 x[0].lengthx[1].lengthx[2].length4

enter image description here

如何遍历和使用您可以按照以下示例作为蓝图的2D数组:

enter image description here

答案 1 :(得分:1)

2D数组并不是完全必要的(我还没有太多使用它们),但与保持一维数组相比,它们可能是有益的。

对于使用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&amp; 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