尝试使用2D数组和用户输入创建单词搜索来设置大小?

时间:2015-12-07 18:11:57

标签: java multidimensional-array

我试图让用户输入单词搜索拼图的大小,但每当我运行该程序时,我得到的数组超出了绑定错误。例如,我输入10,然后拼图将是10乘10字搜索。我对编程很新,并希望使用对象和实例实例变量来创建它。

import java.util.Scanner;

public class Puzzle {


private char [][] myPuzzle;// creating my object



 public static void main(String[] args) {
     Puzzle myPuzzle = new Puzzle(); // creating an instance of my puzzle object
     myPuzzle.puzzleSize();

 }

 public char[][] puzzleSize(){
     Scanner keyboard = new Scanner(System.in);
     System.out.println("Hi, What would you like your puzzle size to be?");
     int puzzleSize = keyboard.nextInt();    
     int row = puzzleSize;
     int col = puzzleSize;
     char[][] puzzle= new char [row][col];

      for(int i=0;i<puzzle.length;row++){ // creating the puzzle size

        for(int o=0;o<puzzle.length;col++){
            System.out.print(puzzle[row][col]);
        }
        System.out.println("");
    }

     return puzzle;
  }
}

3 个答案:

答案 0 :(得分:0)

System.out.print(puzzle[row][col]);应替换为System.out.print(puzzle[i][o]);

答案 1 :(得分:0)

尝试更改此行,

for(int i=0;i<puzzle.length;row++){
    for(int o=0;o<puzzle.length;col++){
        // iterate column
        System.out.print(puzzle[row][col]);

用,

for(int i=0;i<puzzle.length;i++){
    for(int o=0;o<puzzle[i].length;o++){..
        System.out.print(puzzle[i][o]);

答案 2 :(得分:0)

  for(int i=0;i<puzzle.length;row++){ // creating the puzzle size

    for(int o=0;o<puzzle.length;col++){
        System.out.print(puzzle[row][col]);
    }
    System.out.println("");
  }

这里有几个问题。

每个for循环都没有正确构建。让我们来看看你的第一个循环:

for(int i=0;i<puzzle.length;row++){

你的意图是为循环的每次传递增加整数i,直到i是数组的长度。你实际做的是设置i = 0,并且对于每次传递,递增行整数,导致循环无限期地继续。通过以下更改解决此问题:

for(int i=0;i<puzzle.length;i++){

你正在对第二个循环做同样的事情。在构建for循环时将col ++改为o ++。

你的第二个循环的另一个问题是你正在检查puzzle.length作为最大长度的参数。您希望在给定第一个循环的i值的情况下检查第一个维度的每个值的数组第二维的长度:

for(int o=0;o<puzzle[i].length;o++){

现在循环工作正常,您需要修复打印值以正确打印每个当前数组元素的值:

System.out.print(puzzle[i][o]);

而不是使用row和col,它们仅在创建数组期间用于指示数组大小。

另外请记住,分配两个额外的整数row和col是多余的,因为你已经将puzzleSize分配给你想要的值:

char[][] puzzle = new char[puzzleSize][puzzleSize]

希望这有帮助。