返回数组java的元素
这是我的Python代码返回数组java的元素,java,python,Java,Python,这是我的Python代码 def string(data): n=0 while True: yield data[n] n+=1 n%=len(data) 下面是我调用string方法的Java代码: 如果我理解正确的话,它应该在序列结束时返回序列数据中的下一项-将您带到开始处,然后一直到无穷远。在Java中,产量没有直接的替代品。你可以尝试用一些小类来模拟它 class YieldSubstitute<Data>
def string(data):
n=0
while True:
yield data[n]
n+=1
n%=len(data)
下面是我调用string方法的Java代码:
如果我理解正确的话,它应该在序列结束时返回序列数据中的下一项-将您带到开始处,然后一直到无穷远。在Java中,产量没有直接的替代品。你可以尝试用一些小类来模拟它
class YieldSubstitute<Data> {
private int n;
private Data[] data;
public YieldSubstitute(Data[] data) {
this.n = 0;
this.data = data;
}
public Data getNext() {
Data toReturn = data[n];
n = (n + 1) % data.length;
return toReturn;
}
}
Java代码基本上是一个无限循环的集合,这些循环在第一次迭代时被破坏。在尝试将收益视为回报之前,您应该进一步了解python中返回和收益之间的区别
编辑:根据您的描述,您需要的是:
byte[] out = new byte[lengthText]; // initialized with 0s
int n = 0;
for (int i = 0; i < lengthText; i++) {
out[i] = data1[n] ^ data2[n]; // assuming that both arrays have more that 0 elements
n = (n + 1) % Math.min(data1.length, data2.length); // just in case their length differ
}
其中,data1和data2都是byte[]类型。如果它们的长度保证相等,你就可以跳过Math.min这个问题。我不确定你到底在问什么。这里有很多没有上下文或描述的代码lengthText来自哪里?pyton中的yield data[n]与return a[i]不同;在javalengthText中,我需要的是获取数组的每个元素并对它们应用XOR操作。并在此操作后生成新数组。但是新数组应该是特定大小的lengthText,我的意思是,如果我们应用XOR的数组结束,它应该返回到第一个元素并继续操作,而新数组的大小将是lengthText。很抱歉,我不能解释清楚,但我是初学者。看看我的编辑,并说如果这是你想做的。不完全是,但我的代码开始工作正常:也许它不好,但现在它正在工作。我试着让它变得更好。谢谢你的时间和帮助。
class YieldSubstitute<Data> {
private int n;
private Data[] data;
public YieldSubstitute(Data[] data) {
this.n = 0;
this.data = data;
}
public Data getNext() {
Data toReturn = data[n];
n = (n + 1) % data.length;
return toReturn;
}
}
YieldSubstitute<Data> ys = new YieldSubstitute<Data>(data);
Data data1 = ys.getNext();
Data data2 = ys.getNext();
...
generator = string(data)
data1 = next(generator)
data2 = next(generator)
...
byte[] out = new byte[lengthText]; // initialized with 0s
int n = 0;
for (int i = 0; i < lengthText; i++) {
out[i] = data1[n] ^ data2[n]; // assuming that both arrays have more that 0 elements
n = (n + 1) % Math.min(data1.length, data2.length); // just in case their length differ
}