четверг, 11 февраля 2010 г.

Чтение c консоли

В связи с многочисленными вопросами решил написать сей пост дабы отбросить последние(надеюсь мне это удастся).

Для чтения с консоли существует стандартный класс java.util.Scanner, который принимает в качестве параметра поток ввода (потоки отдельная тема, которая пока не предусмотрена в нашем курсе, по желанию любой может изучить ее самостоятельно, тема не сложная и на практике почти не применяется). Поток ввода с консоли можно получить с помощью процедуры System.in.

У класса Scanner есть много методов для чтения данных с консоли, они начинаются с слова "next". пример: nextString(), nextInt(), nextDouble(), которые возвращают соответствующие типы.

Рассморим пример программы, которая считает целые числа, введенные с консоли, пока не будет набрано "calc":
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); 
/* Создаем объект Scanner */
Integer sum = 0; 
System.out.println("Input integer");
while(true) {
String str = scanner.nextLine(); 
/* Считываем стороку */
if(str.equals("calc")) { 
/* Проверяем на совпадение со строкой "calc" */
System.out.println("Sum = " + sum);
System.exit(0); 
/* Завершаем программу с кодом 0 (успешно) */
}
try {
sum += Integer.parseInt(str); 
/* Преобразовываем строку в число и суммируем */
} catch (NumberFormatException e) {
System.out.println("Wrong format");
}
}
}

Если что не понятно, пишите вопросы.

UPD: В комментариях есть еще один вариант решения (compiler)

1 комментарий:

  1. Многочисленные вопросами - оптимистично сказано (эти мысли оформлю отдельно).

    вот еще один пример)

    Scanner sc = new Scanner(System.in);
    boolean k = true;
    String str = "";
    int sum = 0;
    while(k){
    str = sc.nextLine();
    if(str.equals("calc")){
    k = false;
    } else {
    sum += Integer.parseInt(str);
    }
    }

    (by compiler)
    syso(sum);

    ОтветитьУдалить