Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android java读取文件将结果传递给方法_Java_Android_Arrays_Multidimensional Array - Fatal编程技术网

Android java读取文件将结果传递给方法

Android java读取文件将结果传递给方法,java,android,arrays,multidimensional-array,Java,Android,Arrays,Multidimensional Array,我想我缺少了java语言的一些基本原则,或者说编程的一般原则。 我已经将一个包含整数的文本文件读入一个2d数组(它似乎工作得很好),并将2d数组传递到另一个类的方法中,但是当从那里打印结果时,我得到了所有0。我有一种预感,这是一些我忽略或不知道的基本而简单的事情 下面是我在类映射中填充代码的地方: public void load() { mapWidth = 40; mapHeight = 32; //int[][] baseLayer = new int[mapWid

我想我缺少了java语言的一些基本原则,或者说编程的一般原则。 我已经将一个包含整数的文本文件读入一个2d数组(它似乎工作得很好),并将2d数组传递到另一个类的方法中,但是当从那里打印结果时,我得到了所有0。我有一种预感,这是一些我忽略或不知道的基本而简单的事情

下面是我在类映射中填充代码的地方:

public void load() {
    mapWidth = 40;
    mapHeight = 32;
    //int[][] baseLayer = new int[mapWidth][mapHeight];
    baseLayer = new int[mapWidth][mapHeight];
    try {
        is = file.readAsset("maps/townMap.txt");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Log.d("android", "could not load file");
    }
    scanner = new Scanner(is);
    scanner.useDelimiter("[\\s,\r\n]+");
    try {
        for (int i = 0; i < mapWidth; i++) {
            for (int j = 0; j < mapHeight; j++) {
                while (scanner.hasNext()) {
                    if (scanner.hasNextInt()) {
                        baseLayer[i][j] = scanner.nextInt();
                    }
                }
            }
        }
    } finally {
        scanner.close();
    }
    testMap = new AndroidMap(mapWidth, mapHeight, baseLayer, tMapLayer2);
    currentMap = testMap;
}
public void load(){
地图宽度=40;
地图高度=32;
//int[][]基本层=新int[mapWidth][mapHeight];
baseLayer=新整数[mapWidth][mapHeight];
试一试{
is=file.readAsset(“maps/townMap.txt”);
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
Log.d(“android”,“无法加载文件”);
}
扫描仪=新扫描仪(is);
scanner.useDelimiter(“[\\s\r\n]+”);
试一试{
对于(int i=0;i
在这里,我尝试复制AndroidMap类中的内容: 公共类AndroidMap{

int mapWidth;
int mapHeight;
int[][][] map;

public AndroidMap(int mapWidth, int mapHeight, int[][] baseLayer, int[][]midLayer) {
    this.mapWidth = mapWidth;
    this.mapHeight = mapHeight;
    map = new int[mapWidth][mapHeight][2];
    for (int i = 0; i < mapWidth; i++) {
        for (int j = 0; j < mapHeight; j++) {
            map[i][j][0] = baseLayer[i][j];
            map[i][j][1] = midLayer[i][j];
        }
    }
}
int-mapWidth;
int地图高度;
int[][]地图;
公共AndroidMap(int-mapWidth、int-mapHeight、int[][]基本层、int[][]中间层){
this.mapWidth=mapWidth;
this.mapHeight=mapHeight;
map=newint[mapWidth][mapHeight][2];
对于(int i=0;i

}

问题在于内部while循环。

一些关于如何填充、传递和打印数组的具体代码,最好是以SSCCE的形式,将有助于更好地理解错误。例如,可能您只是传递了错误的引用?基本上不建议在android中使用2d数组。你应该选择2个并行数组或不同的数据结构。是的,如果能看到一些代码就好了。因此,我们可以看到您使用了哪些类来执行此操作。一旦我们知道你在使用什么,我们就可以提出建议。@user802421是Android中不推荐的2d数组吗?它们在Java中通常没有问题。事实上,在Java中建议不要使用并行数组,在我看来,有比使用并行数组更好的方法,使用它们会有更大的出错空间。@AdamJMTech我从这里读到:@semahan只是提醒一下,你可以将自己的答案标记为已接受的答案。虽然你可能想花点时间来扩展你的答案,解释为什么那部分也是错的。