【问题标题】:Need help entering an ArrayList into my WordSearchPuzzle program需要帮助将 ArrayList 输入到我的单词搜索拼图程序中
【发布时间】:2012-04-10 10:42:10
【问题描述】:

您好,我是 Java 新手,在创建我的单词搜索拼图程序时遇到了困难。我正在尝试让用户输入单词的 ArrayList,以便可以将其输入到我的拼图中,但是当我输入字符串数组时,我一直收到错误,有人可以帮忙吗??

 import java.io.* ;
import java.util.ArrayList ;
public class WordSearchPuzzle
{
    private char[][] puzzle ;
    private ArrayList<String> puzzleWords ;
    private int letterCount = 0 ;
    private int gridDimensions;

    public WordSearchPuzzle(ArrayList<String> userSpecifiedWords)
    {
        this.puzzleWords = userSpecifiedWords ;

    }

    private void createPuzzleGrid()
    {
        int i;
        for(i = 0; i < puzzleWords.size() ; i++){
            letterCount = puzzleWords.size() + letterCount ;
        }
        gridDimensions = letterCount * 2;
        puzzle = new char[gridDimensions][gridDimensions] ;
    }

    private void generateWordSearchPuzzle()
    {

    }

    public void fillPuzzle()
    {
        int i, j, r;
        for (i = 0; i < this.gridDimensions; i++)
            for (j = 0; j < this.gridDimensions; j++)
                if (puzzle[i][j] == ' ') {
                    r = (int) (Math.random() * letterCount);
                    puzzle[i][j] = letterCount.charAt(r);
        }
    }

    public void fill() 
    {
        int i, j, gridDimensions, r, c;
        boolean added;
        this.clear();
        for (i = 0; i < WordSearch.words.size(); i++) {
            ws = (WSWord) WordSearch.words.elementAt(i);
            row = (int) (Math.random() * this.rows);
            col = (int) (Math.random() * this.cols);
            added = false;
        }

【问题讨论】:

  • 发布您的完整代码以及您在尝试执行它时收到的错误。
  • 我必须输入要加载到拼图中的单词数组,但是当我输入像 {"hello","bye"} 这样的字符串时,我不断收到此错误消息:错误: java.util.ArrayList 的非法初始化程序
  • 请贴出调用WordSearchPuzzle构造函数的代码。我的猜测是您正在尝试传递 String[] 而不是列表。
  • 您确实需要发布您的代码,否则我们无法准确看到您在做什么。您不能使用 {} 构造初始化数组列表 - 这是为数组明确保留的。

标签: java arraylist multidimensional-array


【解决方案1】:

如果您将拼图称为字符串数组,则不是,它是 char 的二维数组。也许你需要

private String puzzle[];

不幸的是,从给定的代码示例中并不清楚您到底遇到了什么问题。

【讨论】:

  • 我必须输入要加载到拼图中的单词数组,但是当我输入像 {"hello","bye"} 这样的字符串时,我不断收到此错误消息:错误: java.util.ArrayList 的非法初始化程序
  • 不,你不能用数组初始化 ArrayList。你可以试试这样的:this.puzzleWords = java.util.Arrays.asList(yourStringArray);
【解决方案2】:

您不能只使用 = 来复制 arraylist 及其内容: 从一个类似的问题: clone(): ArrayList.clone() I thought does a shallow copy

适应您的情况:

this.puzzleWords = new ArrayList(userSpecifiedWords)

【讨论】:

  • 我不认为这是这里的问题。他可以这样做,但当然更改 userSpecifiedWords 会导致 puzzleWords 数组发生变化,因为它们指向同一个数组。
  • 我输入的内容在不同的内存位置创建了一个克隆。他在上面发布的内容不会复制字符串的内容。
【解决方案3】:

初始化puzzleWords。

private ArrayList<String> puzzleWords = new ArrayList<String> ();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    • 2011-08-11
    • 2020-05-02
    相关资源
    最近更新 更多