首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >学习算法,如何在java中实现元组?

学习算法,如何在java中实现元组?
EN

Stack Overflow用户
提问于 2016-01-22 02:29:28
回答 2查看 86关注 0票数 6

我正在教自己算法,如果我的标题是错误的,我很抱歉!我不明白如何在Java中实现这一点。

代码语言:javascript
复制
if x = 0: 
return (q,r) = (0,0) 
(q, r) = divide(⌊x/2⌋, y)
q=2·q, 
r=2·r
if x is odd: r=r+1 
if r≥y: r=r−y, q=q+1 
return (q, r)

我不知道如何在Java中实现以下部分。

代码语言:javascript
复制
(q,r)=(0,0)
(q,r)=divide(⌊x/2⌋, y)
return (q,r)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-22 02:39:25

尽管Java缺乏对元组的内置支持,但好消息是,除了返回值之外,您不必使用元组来实现该算法。两个常规的int变量rq就可以了。

代码语言:javascript
复制
// (q,r)=(0,0)
int q = 0, r = 0;
// (q,r)=divide(⌊x/2⌋, y)
q = (x/2) / y;
r = (x/2) % y;

返回有点棘手,因为您必须返回两个值。在Java中实现它的惯用方法是定义一个类:

代码语言:javascript
复制
class QandR {
    private final int q;
    private final int r;
    public QandR(int q, int r) {
        this.q = q;
        this.r = r;
    }
}

现在您可以从您的方法返回new QandR(q, r)

票数 7
EN

Stack Overflow用户

发布于 2016-01-22 02:40:00

可以使用数组或类实例来包含和返回多个值。例如。

(q,r),其中qr都属于int类型

代码语言:javascript
复制
int[] qrTuple = new int[2]; // zero initialized

代码语言:javascript
复制
class QrTuple {
    int q, r;

    QR(int q, int r) {
        this.q = q;
        this.r = r;
    }
}

然后

代码语言:javascript
复制
QrTuple qrTuple = new QrTuple(0, 0);

在这两种情况下,您都可以在方法的末尾进行如下操作:

代码语言:javascript
复制
return qrTuple;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34937994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档