java - 使用三元运算符

时间:2013-03-20 11:41:08

标签: java ternary-operator

我得到了一个包含4种不同条件的大型代码,我试图使用条件三元运算符descibed here来缩短它。但是,由于我有两个以上的条件,我无法管理正确的语法。在这种情况下,有人可以解释如何使用三元运算符吗?我的代码低于

不,我不是要求为我编写代码,我正在寻找有多种条件的三元运算符使用的解释

     if (mp.getCurrentPosition() / 1000 / 60 < 10
            && mp.getCurrentPosition() / 1000 % 60 < 10) {
        tvTimeElapsed.setText("0"
                + Integer.toString(mp.getCurrentPosition() / 1000 / 60)
                + ":" + "0"
                + Integer.toString(mp.getCurrentPosition() / 1000 % 60));

    } else if (mp.getCurrentPosition() / 1000 / 60 < 10
            && mp.getCurrentPosition() / 1000 % 60 >= 10) {

        tvTimeElapsed.setText("0"
                + Integer.toString(mp.getCurrentPosition() / 1000 / 60)
                + ":"
                + Integer.toString(mp.getCurrentPosition() / 1000 % 60));

    } else if (mp.getCurrentPosition() / 1000 / 60 >= 10
            && mp.getCurrentPosition() / 1000 % 60 < 10) {

        tvTimeElapsed
                .setText(Integer.toString(mp.getCurrentPosition() / 1000 / 60)
                        + ":"
                        + "0"
                        + Integer.toString(mp.getCurrentPosition() / 1000 % 60));

    } else {

        tvTimeElapsed
                .setText(Integer.toString(mp.getCurrentPosition() / 1000 / 60)
                        + ":"
                        + Integer.toString(mp.getCurrentPosition() / 1000 % 60));

    }

3 个答案:

答案 0 :(得分:2)

这个怎么样,没有任何三元:

int seconds = mp.getCurrentPosition() / 1000;
tvTimeElapsed.setText(
    String.format("%02d:%02d", seconds / 60, seconds % 60);
);

你不需要在这里重新发明所有这些条件的轮子:有一个内部Java字符串格式化器,用于所有这些艰难的选择和东西。 )

答案 1 :(得分:1)

我必须同意所有评论:这很难看。

String textToSet = (mp.getCurrentPosition() / 1000 / 60 < 10 ? 
( mp.getCurrentPosition() / 1000 % 60 < 10 ? "0"
                + Integer.toString(mp.getCurrentPosition() / 1000 / 60)
                + ":" + "0"
                + Integer.toString(mp.getCurrentPosition() / 1000 % 60) : "0"
                + Integer.toString(mp.getCurrentPosition() / 1000 / 60)
                + ":"
                + Integer.toString(mp.getCurrentPosition() / 1000 % 60)) : 
( mp.getCurrentPosition() / 1000 % 60 < 10 ? "0"
                + Integer.toString(mp.getCurrentPosition() / 1000 / 60)
                + ":"
                + Integer.toString(mp.getCurrentPosition() / 1000 % 60) : Integer.toString(mp.getCurrentPosition() / 1000 / 60)
                        + ":"
                        + "0"
                        + Integer.toString(mp.getCurrentPosition() / 1000 % 60)) )

替换整数:

Integer int1 = mp.getCurrentPosition() / 1000 / 60;
Integer int2 = mp.getCurrentPosition() / 1000 % 60;

tvTimeElapsedText = (int1< 10 ? 
                        (int2 < 10 ? 
                            "0" + Integer.toString(int1) + ":" + "0" + Integer.toString(int2) :
                            "0" + Integer.toString(int1) + ":" + Integer.toString(int2)
                        ) :
                        (int2 < 10 ? 
                            Integer.toString(int1) + ":" + "0" + Integer.toString(int2) :
                            Integer.toString(int1) + ":" + Integer.toString(int2)
                        )
                    )

答案 2 :(得分:1)

删除了第一部分

修改

int var1 = mp.getCurrentPosition() / 1000 / 60;
int var2 = mp.getCurrentPosition() / 1000 % 60;

String hour = var1 < 10 ? "0" + var1 : var1;
String minute = var1 < 10 ? "0" + var2 : var2;

String complete = hour + ":" + minute;