Как получить номер из консоли в Java? - PullRequest
0 голосов
/ 30 мая 2010

Это мой метод, который будет вызываться, если я хочу получить номер от пользователя. Но если пользователь также введет правильный номер, будет запущена только часть «else», почему?

Вы можете объяснить?

    public static int chooseTheTypeOfSorting() {
    System.out.println("Enter 0 for merge sorting OR enter 1 for bubble sorting");
    int numberFromConsole = 0;
    try {
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);
        String s = br.readLine();
        DecimalFormat df = new DecimalFormat();
        Number n = df.parse(s);
        numberFromConsole = n.intValue();

    } catch (ParseException ex) {
        Logger.getLogger(DoublyLinkedList.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(DoublyLinkedList.class.getName()).log(Level.SEVERE, null, ex);
    }
    return numberFromConsole;
}

и по моему основному методу:

 public static void main(String[] args) {
    int i = 0;
    i = getRandomNumber(10, 10000);
    int p = chooseTheTypeOfSorting();
    DoublyLinkedList list = new DoublyLinkedList();
    for (int j = 0; j < i; j++) {
        list.add(j, getRandomNumber(10, 10000));

        if (p == 0) {
           //do something....
        }
        if (p == 1) {
            //do something.....
        } else {
            System.out.println("write the correct number ");
            chooseTheTypeOfSorting();
        }

1 Ответ

2 голосов
/ 30 мая 2010

Проблема в том, что вам не хватает else

    if (p == 0) {
        //do something....
    } else if (p == 1) { // you're missing the else here
        //do something.....
    } else {
        System.out.println("write the correct number ");
        chooseTheTypeOfSorting();
    }

При чтении номера с консоли

Использование java.util.Scanner

Scanner sc = new Scanner(System.in);
int num = sc.nextInt();

В документации есть больше примеров.

Обратите внимание, что вы можете установить разделитель, и он также имеет множество hasNextXXX методов, которые вы можете использовать для проверки по InputMismatchException.

Смотри также


Рассмотрение проекта

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

Вы также можете рассмотреть возможность использования enum:

enum SortMode {
   BUBBLE_SORT, QUICK_SORT, BOGO_SORT;
}

Смотри также

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