gpt4 book ai didi

java - 接收二维数组中的元素并移动指针(Java)

转载 作者:行者123 更新时间:2023-11-30 06:55:11 24 4
gpt4 key购买 nike

我是 Java 初学者,我需要编写一个 next() 方法,该方法将从 2D 数组返回当前值并将指针移动到下一个元素。它类似于迭代器的 next() 方法。

例如,我们可能有:

int[][] values = {{1, 2}, {3, 4}}; 

当我们第一次使用next()时,它返回1(指针移动到下一个索引,现在指针位于2 >),第二次使用 - 2(+移动指针),第三次 - 3(+移动指针),等等

我写了一些糟糕的代码来说明我想做的事情:

public class ArrayConverter {
private final int[][] values;
private int upper = 0;
private int lower = -1;

public ArrayConverter(int[][] values) {
this.values = values;
}

public int next() {
lower++;
int result = 0;
try {
result = values[upper][lower];
} catch (ArrayIndexOutOfBoundsException a) {
lower = 0;
upper++;
try {
result = values[upper][lower];
} catch (ArrayIndexOutOfBoundsException r) {
upper = 0;
lower = -1;
System.out.print("Reached the end of data. Indexes will be zeroed.");
}
}
return result;
}
}

有什么方法可以做得更好,特别是在不使用 try/catch block 的情况下?

最佳答案

使用 array.length 进行范围检查

试试这个:

private int upper = 0;
private int lower = 0;

public int next() {
if(lower >= values[upper].length){
upper++;
lower = 0;
}
if(upper >= values.length){
throw new NoSuchElementException("Reached end");
}
int result = values[upper][lower++];
return result;
}

关于java - 接收二维数组中的元素并移动指针(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41974769/

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