我得到了一个包含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));
}
答案 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;