2016-12-01 257 views
0

我正在搞乱二维数组,并试图构建一个程序,将字符串放入二维字符数组中,并用随机字母填充剩余的空格。我可以尽全力用随机字符填充数组,但我无法弄清楚如何将字符串存入char数组。这就是我正在考虑以伪代码解决问题的原因,因为我无法正确理解这一点。Java:将字符串添加到多维字符数组中

  1. 我救了串到名为words一个ArrayList(已编码的这部分)。

  2. 我想去通过每个元素在ArrayList和比较每一个与空间的char数组中可用

  3. 确定它不会去出界,如果添加的长度,并将这些“坐标”保存到另一个ArrayList中。

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

这一切对我来说很有意义,我的头和写下来(请让我现在如果事实并非如此),但问题是我不知道如何真正落实“决定在那里赢得”超越界限“的一部分。具体而言,我不知道如何真正确定数组中的哪些空间太靠近“边缘”,以便我添加单词而不会超出界限。

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

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

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())]; 
    } 
} 
+0

你可以发布一个输入字符串在解析前后应该是什么样子的例子吗? ** board **变量是什么? –

回答

0

我看到你的问题是将字符串中的每个字符放入该2D字符数组中。 那么,我建议将输入字符串转换为1D字符数组,然后您可以将该1D字符数组中的每个字符添加到2D字符数组中。 尝试添加这两种方法给你的代码,我认为你需要随机添加字符串字符到数组中,如果没有,你可以替换为二维数组产生随机索引的部分。

private char[] stringToArray() { 
    // added method to convert input string to char array 
    return this.inWord.toCharArray(); 
} 


    public void fillArrayWithString() { 
    // added method to insert string randomly in the 2D char array 
    int stringArrayLength = stringToArray().length; 
    int iterator = 0; 
    int cols; 
    int rows; 
    while (iterator < stringArrayLength) { 
     rows = (int) (arrayBoard.length * Math.random()); 
     if (rows < arrayBoard.length) { 
      cols = (int) (arrayBoard[rows].length * Math.random()); 
      if (cols < arrayBoard[rows].length) { 
       arrayBoard[rows][cols] = stringToArray()[iterator++]; 
      } 
     } 
    } 
}