以前从未见过这样的事情。具体来说是第4行。 目前我了解:
在位置i-1的days数组获取值...
除了=之外,除了+之外,我什么都不知道。
public String[] months() {
String[] days = new String[12];
for (int i = 1; i <= 12; i++) {
days[i - 1] = i < 10 ? "0" + Convert.ToString(i) : Convert.ToString(i);
}
return days;
}
为什么还有2个转换?
进一步研究其他代码,我认为开发人员复制并粘贴了先前的代码。天数组应该是几个月,因为有12个月。
谢谢,以前从未见过三元运算符。谢谢!
public String[] months() {
String[] months = new String[12];
for (int i = 1; i <= 12; i++) {
/* faster way of saying */
/* if i < 10 {} else {} */
/* if condition is met do everything before the :, else do everything after */
/* checks for 10 because months can be 1 or 2 digits, 0-9, then 10-12 */
/* single digits concatenated to the 0 */
/* double digits replace the 0 */
months[i - 1] = i < 10 ? "0" + Convert.ToString(i) : Convert.ToString(i);
}
return months;
}
答案 0 :(得分:2)
这是conditional operator,也称为三元条件运算符。
这是...的简写
if (i < 10)
{
days[i - 1] = "0" + Convert.ToString(i);
}
else
{
days[i - 1] = Convert.ToString(i);
}
该代码基本上在单个数字的前面加一个“ 0”。
答案 1 :(得分:0)
它是三元运算符。如果表达在前面?符号为true,结果将为?之后的值。符号,否则为冒号后面的值。
此代码将前导零添加到该值。如果该值小于10,则该值变为“ 0” +值,因此9变为“ 09”,等等。
答案 2 :(得分:0)
?:
是速记
如果i < 10
days[i-1] = "O" + Convert.ToString(i)
ELSE
days[i-1] = Convert.ToString(i)