我想先使用扫描仪输入从用户输入中获得3位数字。 3位数字可以是001或999,但不能是000。然后,我需要在句子“第***人”中打印该数字。 假设3位数字是021,那么我希望它会显示“ 21st person”。
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter a value ");
int abc = input.nextInt();
String suffix = "";
if(abc==000){
System.out.println("invalid input");
}
switch(abc%10){ //get the last digit of the value
case 1: suffix = "st";break;
case 2: suffix = "nd";break;
case 3: suffix = "rd";break;
default: suffix = "th";
}
System.out.println(abc+suffix);
}
}
如何更改我的代码,使程序可以检查第11、12、13、111个案件?
答案 0 :(得分:0)
也许我们应该分别处理4到20。您能检查一下是否可行吗?
if (abc > 3 && abc < 21) { // 4 to 20
suffix = "th";
}
else {
switch (abc % 10) { //get the last digit of the value
case 1:
suffix = "st";
break;
case 2:
suffix = "nd";
break;
case 3:
suffix = "rd";
break;
default:
suffix = "th";
}
}
答案 1 :(得分:0)
基本上,您还应该首先检查右边的第二个数字是否为1。要获取右边的第二个数字,请使用以下表达式:
number / 10 % 10
/ 10
使右边的第二个数字成为第一个数字,而% 10
是您知道如何从右边得到的第一个数字。
因此您的代码应如下所示:
if (number / 10 % 10 == 1) { // check second digit from the right first
suffix = "th";
} else { // if it's not 1, do the switch.
switch(abc%10){
case 1: suffix = "st";break;
case 2: suffix = "nd";break;
case 3: suffix = "rd";break;
default: suffix = "th";
}
}
System.out.println(abc+suffix);