gpt4 book ai didi

java - 如何从文本文件中读取单个字符并将它们存储到二维数组中?

转载 作者:行者123 更新时间:2023-12-01 23:40:43 24 4
gpt4 key购买 nike

所以我有一个如下所示的文本文件:

##oooooo
##oo#oo#
oo##o##o
oo##o##o
o#oo#oo#
oo##o##o
oo##o##o
o#oo#oo#

我想将它插入一个大小为 10x10 且充满“#”的二维字符数组的中间。所以像这样。

##########
###oooooo#
###oo#oo##
#oo##o##o#
#oo##o##o#
#o#oo#oo##
#oo##o##o#
#oo##o##o#
#o#oo#oo##
##########

下面的代码首先打印出一个纯“#”的二维数组。我继续读取文本文件并抓取每行的单个字符,并在 i 和 j 位置为它们设置一个 char 值。这是到目前为止我的代码...

public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
char[][] hashArray = new char[10][10];
readFromFile("grid1.txt", hashArray);
}
public static void readFromFile(String txtFile, char[][] hashArray)
{
// Displays basic 10x10 array of #
int counter = 0;
for (int i = 0; i < hashArray.length; i++)
{
for (int j = 0; j < hashArray.length; j++)
{
if (counter == 10)
{
System.out.println();
counter = 0;
}
hashArray[i][j] = '#';
System.out.print(hashArray[i][j]);
counter++;
}
}
System.out.println("\n");

counter = 0;
for (int i = 0; i < hashArray.length; i++)
{
for (int j = 0; j < hashArray.length; j++)
{
// I use a counter to skip to next line
if (counter == 10)
{
System.out.println();
counter = 0;
}
// Basically creates my # borders
if ((i == 0) || (i == 9) || (j == 0) || (j == 9))
{
hashArray[i][j] = '#';
System.out.print(hashArray[i][j]);
counter++;
}
else
{
// counter set at 2 compensates for the length of
// each line of read in text file.
counter = 2;
try
{
Scanner read = new Scanner(new File(txtFile));
while (read.hasNext())
{
String grid = read.nextLine();
char value = grid.charAt(i);
hashArray[i][j] = value;
System.out.print(hashArray[i][j]);
counter++;
}
}
catch (FileNotFoundException fnf)
{
System.out.println("File was not found.");
}
}
}
}
System.out.println();
}

当我运行它时,它给了我这个错误。

java.lang.StringIndexOutOfBoundsException: String index out of range: 8

我感谢任何和所有的帮助。谢谢。

最佳答案

您本质上不是只是尝试在输入中的每一行的开头和结尾处添加井号标记 (#) 吗?

如果是的话,这样不是更容易吗?

public static void main(String[] args) throws IOException {
Files.readAllLines(Paths.get("grid1.txt"))
.forEach(i -> System.out.println("#" + i + "#"));
}

关于java - 如何从文本文件中读取单个字符并将它们存储到二维数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58260762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com