gpt4 book ai didi

java - 使用扫描仪Java从文本文件填充二维数组

转载 作者:行者123 更新时间:2023-11-29 05:05:21 26 4
gpt4 key购买 nike

我正在尝试通过使用扫描仪读取文本文件来填充 Java 中的二维数组。目前,我不完全明白出了什么问题。下面是我正在使用的文本文件、打印时的二维数组和我的代码。

文本文件

30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 
30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 28 22 23 29 30 30 30 30 30 30 30 30
30 30 30 30 30 30 28 22 33 9 10 34 23 29 30 30 30 30 30 30
30 30 30 30 28 22 33 9 17 1 1 18 10 34 23 29 30 30 30 30
30 30 28 22 33 9 17 1 1 1 1 1 1 18 10 34 23 29 30 30
28 22 33 9 17 1 1 1 1 1 1 1 1 1 1 18 10 34 23 29
33 9 17 1 1 2 1 1 1 1 1 1 1 1 6 1 1 18 10 34
32 8 16 1 1 1 1 1 1 1 1 1 1 1 1 5 1 15 7 31
27 25 32 8 16 1 1 3 1 1 1 1 1 1 1 15 7 31 24 26
30 30 27 25 32 8 16 1 1 1 1 1 1 15 7 31 24 26 30 30
30 30 30 30 27 25 32 8 16 1 1 15 7 31 24 26 30 30 30 30
30 30 30 30 30 30 27 25 32 8 7 31 24 26 30 30 30 30 30 30
30 30 30 30 30 30 30 30 27 25 24 26 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30

打印阵列

Map array: [[30, 30, 30, 30, 1, 1, 1, 32, 30, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0], [30, 30, 30, 30, 10, 1, 1, 16, 30, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0], [30, 30, 30, 30, 23, 6, 1, 1, 27, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0], [30, 30, 30, 30, 30, 1, 1, 7, 24, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0], [30, 30, 30, 30, 28, 10, 7, 24, 30, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0], [30, 30, 30, 28, 33, 32, 24, 30, 30, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0], [30, 30, 28, 33, 17, 16, 30, 30, 30, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0], [30, 30, 23, 17, 1, 1, 27, 30, 30, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0], [30, 30, 30, 1, 1, 1, 32, 30, 30, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0], [30, 30, 30, 10, 1, 1, 16, 30, 30, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0], [30, 30, 30, 23, 1, 1, 1, 27, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [30, 30, 30, 30, 1, 1, 1, 32, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [30, 30, 30, 30, 10, 1, 1, 7, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [30, 30, 30, 30, 23, 1, 7, 24, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [30, 30, 30, 28, 33, 7, 24, 30, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [30, 30, 28, 33, 17, 27, 30, 30, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [30, 30, 33, 17, 1, 32, 30, 30, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [30, 30, 10, 1, 1, 16, 30, 30, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [30, 30, 23, 1, 1, 1, 27, 30, 30, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

目前,我的代码在 while 循环中读取每个整数。当 x 坐标(数组中的 x 位置)在数组中增加到 19 时,它被设置为零并且 y 坐标增加(数组中的 y 位置)。这是我用来填充数组的方法。

注意:二维数组(mapWidth和mapHeight)和文本文件的宽和高都是20 * 20。另外,xCoord和yCoord的初始值为0。

我的代码

while (fileScannerTileMap.hasNext()) {

if (fileScannerTileMap.hasNextInt()) {
tileMap[xCoord][yCoord] = fileScannerTileMap.nextInt();
}

fileScannerTileMap.next();

// Increase xCoord each time
xCoord++;

// When xCoord reaches its max at 19, increase yCoord and set xCoord equal to zero
if (mapWidth - 1 == xCoord) {
yCoord++;
xCoord = 0;
}
}

任何帮助将不胜感激!

编辑

我想创建一个与文本文件匹配的 2D 数组,以便稍后可以在 sprite 表中轻松引用 2D 数组的值来为 2D 游戏创建地形。

So 文本文件 --> 二维数组 --> 地形生成

最佳答案

您缺少一些整数,因为您执行了 next 两次:fileScannerTileMap.nextInt();fileScannerTileMap.next();

试试看:

if (fileScannerTileMap.hasNextInt()) {
tileMap[xCoord][yCoord] = fileScannerTileMap.nextInt();
} else {
fileScannerTileMap.next();
}

完成后打破循环:

if (mapWidth - 1 == xCoord) { 
yCoord++;
xCoord = 0;

// add this:
if (mapWidth - 1 == yCoord) {
break;
}
}

关于java - 使用扫描仪Java从文本文件填充二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30557986/

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