3

我得到了一个包含 4 个不同条件的相当大的代码,我尝试使用这里描述的条件三元运算符来缩短这些代码。但是,我无法管理正确的语法,因为我有两个以上的条件。有人可以解释在这种情况下如何使用三元运算符吗?我的代码在下面

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

     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));

    }
4

3 回答 3

3

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

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

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

于 2013-03-20T11:48:34.713 回答
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 :

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)
                        )
                    )
于 2013-03-20T11:45:16.107 回答
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;
于 2013-03-20T11:46:40.597 回答