оператор переключателя на второй - PullRequest
2 голосов
/ 04 октября 2019

Я хочу получить трехзначный номер из пользовательского ввода, используя сначала вход для сканера. Трехзначное число может быть 001 или 999, но не 000. Затем мне нужно напечатать это число в предложении «*** th person». Скажем, если трехзначное число равно 021, то я ожидаю, что на нем будет напечатано «21-й человек».

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-й случаи?

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

По сути, вы также должны сначала проверить, равна ли вторая цифра справа 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);
0 голосов
/ 04 октября 2019

Может быть, мы должны обработать номер 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";
        }
}
...