으로 전달됩니다. 자바 언어의 기본 원칙이나 일반적인 프로그래밍이 빠져 있다고 생각합니다. 정수로 텍스트 파일을 2 차원 배열로 읽어 들였고 (2 차원 배열로 잘 읽은 것 같습니다) 2 차원 배열을 다른 클래스의 메서드로 전달합니다. 그러나 거기에서 결과를 인쇄 할 때 나는 모두 0입니다. 나는 이것이 내가 간과하거나 알지 못하는 단순하고 기본적인 것이 었습니다. 내가 클래스 AndroidMap의 내용을 복사하려고 할 경우안드로이드 자바 파일을 읽는 결과가
다음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;
}
은 다음과 같습니다 : 나는 수업지도의 코드를 채울 경우 다음
는 {
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];
}
}
}
}
어레이를 채우고, 전달하고, 인쇄 한 구체적인 코드 중 일부는 SSCCE의 맛을 사용하는 것이 좋으며 실수를 더 잘 이해하는 데 도움이됩니다. 예를 들어 잘못된 참조를 전달하는 것일 수 있습니다. – BalusC
기본적으로 안드로이드에 2 차원 배열을 권장하지 않습니다. 병렬 배열 2 개 또는 다른 데이터 구조로 이동해야합니다. – user802421
네, 약간의 코드를 보는 것이 좋을 것입니다. 그래서 우리는 당신이 이것을하기 위해 사용했던 수업을 볼 수 있습니다. 그런 다음 우리가 사용하는 것을 알게되면 제안을 할 수 있습니다. – adamjmarkham