Java:将字符串添加到多维char数组

时间:2016-12-01 20:25:51

标签: java string arraylist multidimensional-array char

我正在搞乱2D数组,并尝试构建一个程序,将字符串放入2D char数组,并用随机字母填充剩余的空格。我可以用随机字符填充数组,但是我无法弄清楚如何将字符串放入char数组中。这就是我考虑用伪代码解决它的原因,因为我还没有能够正确解决这个问题。

  1. 我将字符串保存到名为words的ArrayList中(已编码此部分)。

  2. 我想浏览该ArrayList中的每个元素,并将每个元素的长度与char数组中可用的空间进行比较

  3. 确定如果添加它不会超出界限,并保存那些"坐标"到另一个ArrayList。

  4. 然后,使用这些坐标,我会将这些单词逐个转换为字符,并用它们替换已经在数组中的随机字符。

  5. 这一切对我来说都是有道理的并且写下来(如果它没有,请现在就告诉我),但问题是我不知道如何实际实施"确定它赢得的地方& #39;超出范围"部分。具体来说,我不知道如何实际确定阵列中哪些空格太靠近边缘"让我在不超出界限的情况下添加单词。

    我真的很感激任何帮助,并对文字墙感到抱歉。谢谢!

    修改:这是我到目前为止的代码。正如我之前提到的,我没有添加我在上面的伪代码中写的部分,因为我不知道如何。

    import java.util.Scanner;
    import java.util.ArrayList;
    
    public class BuildArray
    {
        private char [][]arrayBoard;
        private int row, col;
        private String inWord;
        ArrayList<String> words = new ArrayList<String>();
    
        public void build()
        {
            Scanner input = new Scanner(System.in); //takes in user input
    
            System.out.println("How many rows?");
            row = input.nextInt();
            System.out.println("How many columns?");
            col = input.nextInt();
            input.nextLine();
    
            do{
                System.out.println("Add a word to array (quit to stop) >");
                inWord = input.nextLine();
    
                if(!inWord.equals("quit"))
                {
                    words.add(inWord);
                }
    
            }while(!inWord.equals("quit"));
    
            fillArray(); 
        }
    
        public void fillArray()
        {
            arrayBoard = new char[row][col];
    
            for(int rows = 0; rows < board.length; rows++)
            {
                for(int cols = 0; cols < board[rows].length; cols++)
                {
                    arrayBoard[rows][cols] = randomChar();
                }
            }
    
        }
    
        public char randomChar()
        {
            char alphabet[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
            'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
            'y', 'z'};
    
            return alphabet[(char)(alphabet.length * Math.random())];
        }
    }
    

1 个答案:

答案 0 :(得分:0)

我看到你的问题是将字符串中的每个字符放入2D char数组中。 好吧,我建议将输入字符串转换为1D字符数组,然后您可以将该1D字符数组中的每个字符添加到2D字符数组中。 尝试将这两种方法添加到您的代码中,我假设您需要将字符串字符随机添加到数组中,否则,您可以替换为2D数组生成随机索引的部分。

Node tmp=head; /* pointer to the head of list */
while (tmp->next) tmp=tmp->next; /* step from Node to Node till the last one */
tmp->next=newNode; /* tell that last one to point to the new Node you created */