我正在编写这段代码,但我不知道是否可以在三元函数中使用else if语句。
我想打印1作为1st,2打印为2nd,3打印为3rd,4-10打印为4-10。
是否有可能在三元组中完成所有操作或者这是不可能的?
while (gradeCounter <= 10){
System.out.printf(gradeCounter==1?"Enter %dst grade: ":"Enter %dth grade : ", gradeCounter);
//how can I do "else if" in ternary function
int grade = input.nextInt();
total = total + grade;
gradeCounter = gradeCounter + 1;
}
答案 0 :(得分:2)
如果您的成绩在1到10之间,那么您可以使用sufixArray,对于高于10的数字,您需要将x1,x2和x3提升为&#34; th&#34; -cardinal ending
String[] cardinalSufixes = new String[]{ "th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th" };
for (int i = 1; i <= 10; i++) {
System.out.printf("Enter %d%s grade: \n", i, cardinalSufixes[i % 10]);
}
使用此代替嵌套三元运算符的优点是 cyclomatic complexity ,如果后者想要更改嵌套代码中的任何逻辑条件,则破坏代码的概率更高比仅使用模运算时。
该代码段将打印出来:
进入一年级:进入二年级:进入三年级:进入四年级: 进入五年级:进入六年级:进入七年级:进入八年级: 进入9年级:进入10年级:
这是您正在寻找的基本订单......