Пример обработки исключений при чтении числа из консоли
Ниже приведен пример ввода целого числа tс консоли и вывода его снова в консоль – с обработкой всех возникающих исключений.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
publicclass Test3 {
publicstaticvoid main(String[] args) {
intt;
try {
// !!! Здесь может быть выброшено исключение
// ввода-вывода
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
//Читаем из консоли строку
// !!! Здесь может быть выброшено исключение
// ввода-вывода
Strings = br.readLine();
//конвертируемстрокувчислоt
// !!! Здесь может быть выброшено исключение
// неправильного формата числа
t = Integer.parseInt(s);
//Ловим исключения ввода-вывода
} catch (IOExceptione) {
//Выводим сообщение об исключении в консоль
System.out.println("IOException: "
+ e.getMessage());
// завершаемработупрограммы
return;
//Ловим исключения неправильного формата числа
} catch (NumberFormatExceptione) {
//Выводим сообщение об исключении в консоль
System.out.println("NumberFormatException: "
+e.getMessage());
// завершаем работу программы
return;
}
// Если исключений не было – дойдем до этого кода
// и выведем введенное значение t
System.out.println("t=" + t);
}
}
Пример решения задачи A
Ниже приведено решение для 0 варианта задачи A.
|
|
Вариант A.0
Для введенного числа t (температура на улице в конце января) вывести прилагательное, характеризующее температуру качественно.
Если t>–5, то вывести «Тепло».
Если –5>= t>–20, то вывести «Нормально».
Если –20>= t, то вывести «Холодно».
Текст программы:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
publicclass A_0 {
publicstaticvoid main(String[] args) {
int t;
System.out.print("Введите t: ");
try {
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
//Читаем из консоли
String s = br.readLine();
//конвертируемстрокувчисло
t = Integer.parseInt(s);
//Ловим исключения ввода-вывода
} catch (IOExceptione) {
//Выводим сообщение об исключении в консоль
System.out.println("IOException: "
+e.getMessage());
// завершаемработупрограммы
return;
//Ловим исключения неправильного формата числа
} catch (NumberFormatExceptione) {
//Выводим сообщение об исключении в консоль
System.out.println("NumberFormatException: "
+e.getMessage());
// завершаем работу программы
return;
}
// собственно вывод «Тепло», «Нормально» и «Холодно»
|
|
if (t >–5) {
System.out.println("Тепло!");
} elseif (t >–20) {
System.out.println("Нормально!");
} else {
System.out.println("Холодно!");
}
}
}
Блок-схема программы:
Рис. 3.7. Блок-схема программыA.0
ТрассировкаразвилоквEclipse
Чтобы выполнить трассировку нашей программы нужно установить точки прерывания, где требуется. В нашем случае мы устанавливаем точку прерывания на 32 строке кода:
Рис. 3.8. Ставим точку прерывания
Выбираем режим выполнения Debug:
Рис. 3.9. Выбор режима Debug
Вводим значение t – в нашем случае –25:
Рис. 3.10. Ввод значения t=–25
Переключаемся в перспективуDebug. Чтобы диалог переключения не появлялся при каждом запуске программы в режиме трассировки, лучше выбрать пункт «Remembermydecision», как показано на рис. 3.11.
Рис. 3.11. Ставим галочку, чтобы сообщение не появлялось снова
После этого собственно можно приступить к трассировке. Обратите внимание на то, что трассировка возможна, только если в закладке Debug активным является именно отлаживаемый метод – в нашем случае main – это видно на рисунках ниже:
|
|
Рис. 3.12. Отлаживаемый метод активен
Рис. 3.13.Отлаживаемый метод не активен
В Eclipse есть возможность просмотреть не только состояние переменных, но и любых выражений. Чтобы их просмотреть,нужно добавить к просматриваемым видам (Views) Expressions:
Рис. 3.14. Добавляем Expressions
В закладках появится Expression, в который можно добавлять любые выражения, в том числе те выражения, которые вычисляются в if–“t>–5”, “t>–20”:
Рис. 3.15. Добавляем выражения в Expressions
При t = –25, программа зайдет только в блок последнего else:
Рис. 3.16. Трассировка программы
И в консоль будет выведено «Холодно»:
Рис. 3.17. Вывод строки «Холодно» в консоль
Чтобы завершить отлаживаемое приложение, нужно выполнить команду Terminate:
Рис. 3.18. Выполнение команды Terminate
Eclipse после завершения отладки выглядит так:
Рис. 3.19.Eclipseпосле завершения отладки
ЦИКЛЫ
Цикл с постусловием dowhile
Часто в алгоритме требуется выполнять какие-то действия несколько раз. В программе в таком случае используется цикл. Простейший цикл – цикл с постусловием. В Java такой цикл обозначается так:
|
|
do {
Действие;
} while (условное_выражение);
На блок-схеме он изображается так:
Рис. 4.1. Структура цикла с постусловием
Рассмотрим использование цикла с постусловием на примере вычисления факториала.
Напомним, что факториал числа N можно вычислить как произведение натуральных чисел 1 * 2 * 3 * … * N–1 * N.
На Java код вычисления факториала через цикл с постусловием можно записать так:
publicclass Test4 {
publicstaticvoid main(String[] args) {
int n = 4;
int f = 1;
int i = 1;
do {
f = f * i;
i = i + 1;
} while (i <= n);
System.out.println("f= " + f);
}
}
Блок схема для этой программы выглядит так:
Рис. 4.2. Блок-схема программы для вычисления факториала
Трассировка цикла в Eclipse
Рассмотрим трассировку цикла в Eclipse на примере факториала.
Точку прерывания поставим настроку9. ВExpressions добавим все переменные (n, f, i) и условие продолжения цикла (i<=n). Логично, что тело цикла будет выполняться до тех пор, пока условие i<=n будет равно true.
Рис. 4.3.Трассировка цикла
Поскольку n = 4, iпоследовательно получит значения 1, 2, 3, 4. Fбудет вычислено последовательно f = 1, затем f = 1 * 1 = 1, f = 1*2 = 2, f = 2 * 3 = 6, f = 6 * 4 = 24. В итоге i станет равным 5, и только в этот момент условие продолжения станет равным false. В этот момент f = 24. Этот момент отображен на рис. 4.4. ниже:
Рис.4.4.Трассировка цикла
После этого программа выйдет из цикла и перейдет к выводу результата:
Рис. 4.5.Вывод результата вычисления факториала
Пример решения задачи B
Рассмотрим реализацию задачи B.0 с помощью цикла dowhile.
ЗадачаB.0:
Население города увеличивается на 3% каждый год. В 2013 году население города составляло 650000 человек. Напишите программу, которая выведет на экран предсказываемую численность населения города в каждом году, вплоть до 2040.
Кодпрограммы:
publicclass B_0 {
publicstaticvoid main(String[] args) {
int year = 2014;
int population = 650000;
do {
System.out.println("В " + year
+ " годувгородеживет "
+ population);
population = (population * 103) / 100;
year++;
} while (year<= 2040);
}
}
Блок-схема для этого кода выглядит так:
Рис. 4.6. Блок-схема программы подсчета населения
Цикл с предусловием while
Код цикла с предусловием в Java выглядит так:
while (условное_выражение) {
Действие;
}
Блок-схема цикла с предусловием выглядит так:
Рис. 4.7. Структура цикла с предусловием while
Дата добавления: 2018-04-04; просмотров: 800; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!