我正在搞乱2D数组,并尝试构建一个程序,将字符串放入2D char数组,并用随机字母填充剩余的空格。我可以用随机字符填充数组,但是我无法弄清楚如何将字符串放入char数组中。这就是我考虑用伪代码解决它的原因,因为我还没有能够正确解决这个问题。
我将字符串保存到名为words
的ArrayList中(已编码此部分)。
我想浏览该ArrayList中的每个元素,并将每个元素的长度与char数组中可用的空间进行比较
确定如果添加它不会超出界限,并保存那些"坐标"到另一个ArrayList。
然后,使用这些坐标,我会将这些单词逐个转换为字符,并用它们替换已经在数组中的随机字符。
这一切对我来说都是有道理的并且写下来(如果它没有,请现在就告诉我),但问题是我不知道如何实际实施"确定它赢得的地方& #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())];
}
}
答案 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 */