Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.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
返回数组java的元素_Java_Python - Fatal编程技术网

返回数组java的元素

返回数组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>

这是我的Python代码

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
}