Использование throws java.io.IOException и получение System.in.read(); для доступа к делу через целое число

Мне нужна помощь только с входной частью. Если пользователь вводит число, мне нужно, чтобы программа считывала и выводила случай, равный введенному числу.

//Эта программа будет отображать месяцы года

public class MonthsOfTheYear {
    public static void main(String[] args) 
            throws java.io.IOException{

        int month;

        System.out.println("Please enter a Month Number: ");

        month = (int) System.in.read(); //Get an integer

        switch (month) {
        case 1:  System.out.println("January");
        break;
        case 2:  System.out.println("February");
        break;
        case 3:  System.out.println("March");
        break;
        case 4:  System.out.println("April");
        break;
        case 5:  System.out.println("May");
        break;
        case 6:  System.out.println("June");
        break;
        case 7:  System.out.println("July");
        break;
        case 8:  System.out.println("August");
        break;
        case 9:  System.out.println("September");
        break;
        case 10: System.out.println("October");
        break;
        case 11: System.out.println("November");
        break;
        case 12: System.out.println("December");
        break;
        default: System.out.println("Invalid Month");
        break;
        }
        System.out.println();
    }
}

person YoungUser    schedule 15.04.2013    source источник
comment
В чем собственно вопрос? Я не понимаю, что вы конкретно спрашиваете.   -  person Paul Richter    schedule 15.04.2013
comment
это может быть то, что вы ищете stackoverflow.com/questions/15273449/   -  person Lavanya    schedule 15.04.2013


Ответы (5)


Вы можете использовать сканер для чтения вашего System.in

Scanner input = new Scanner(System.in);
month = input.nextInt();

Выход:

Please enter a Month Number: 
1
January

См. связанные

Редактировать:

как указал noahz, существует класс Console, который охватывает ту же функциональность. Чтобы понять разницу между ними, прочитайте это.

person Aboutblank    schedule 15.04.2013
comment
Консоль была введена в Java 6 специально для облегчения чтения ввода из командной строки. См.: stackoverflow.com/questions/4602436/ - person noahlz; 15.04.2013

Вместо этого попробуйте использовать класс Console: http://docs.oracle.com/javase/6/docs/api/java/io/Console.html для получения пользовательского ввода, затем преобразуйте строку в число с помощью Integer.parseInt(String)

Также имейте в виду, что следующая версия Java (8) будет поддерживать строки в case блоках.

person noahlz    schedule 15.04.2013
comment
... щелкнув изображение флажка. - person noahlz; 15.04.2013

Попробуйте использовать функции ввода TextIO

Это лучше, чем ввод со сканера

Вам необходимо скомпилировать TextIO.java в качестве предварительного условия, чтобы TextIO.class найти в той же папке.

вместо этого используйте эту функцию ввода:

месяц = ​​TextIO.getChar();

Пожалуйста, дайте мне знать, если у вас возникнут проблемы с этим методом.

Спасибо!

person ElvinD    schedule 27.08.2013

Поправьте меня, если я ошибаюсь, но я уверен, что это все еще будет работать с «system.in.read». В случаях переключения нет одинарных кавычек вокруг ввода, который вы хотите обработать. Если вы хотите, чтобы case one запускался при вводе «1», ваш case должен быть case «1», а не case 1.

person Lawleyenda    schedule 19.08.2016

Здесь проблема заключалась в том, что Java привела символ к целому числу, поэтому вы получаете значение ASCII.
Например, когда вы вводите 5, вы получаете 53 в ASCII. Проверьте это, принимая значение переменной в System.out.println();

Я пытался решить, что месяц меняется на тип char, а затем передается значение char в элемент управления переключателем. Но проблема в том, что методом System.in.read(); можно получить только один символ. Наконец-то вы можете выбирать от 1 до 9.

Я подозреваю, что решение заключается в использовании считывателя буфера. А пока я оставлю вам здесь мой код:

public class MonthsOfTheYear {
    public static void main(String[] args) 
            throws java.io.IOException{

        char month;

        System.out.println("Please enter a Month Number: ");

        month = (char) System.in.read(); //Get an integer
        //System.out.println("Actual value of :" + month);

        switch (month) {
        case '1':  System.out.println("January");
        break;
        case '2':  System.out.println("February");
        break;
        case '3':  System.out.println("March");
        break;
        case '4':  System.out.println("April");
        break;
        case '5':  System.out.println("May");
        break;
        case '6':  System.out.println("June");
        break;
        case '7':  System.out.println("July");
        break;
        case '8':  System.out.println("August");
        break;
        case '9':  System.out.println("September");
        break;
        /*case '10': System.out.println("October");
        break;
        case '11': System.out.println("November");
        break;
        case '12': System.out.println("December");
        break;*/
        default: System.out.println("Invalid Month");
        break;
        }
        System.out.println();
    }
}
person silex189    schedule 10.09.2018