Задача заключается в написании простенького калькулятора (число-операция-число-результат). Программа должна работать бесконечно, если пользователь вводит корректные данные, но если пользователь вводит букву q то программа должна завершиться (именно завершиться, а не уведомить об ошибке). Вот что у меня пока есть:
public static void main(String[] args) < Scanner sc = new Scanner(System.in); do < System.out.println(«Введите число»); int a = sc.nextInt(); sc.nextLine(); System.out.println(«Введите операцию»); String s = sc.nextLine(); System.out.println(«Введите число»); int b = sc.nextInt(); if (s.equals(«+»)) < int res = 0; res = a + b; System.out.println(res); >char c = s.charAt(0); if (c == (‘q’)) break; > while(true);
Сейчас это работает если вместо математического знака ввести q. Но как мне сделать так, чтобы программа завершалась если пользователь введет q вместо числа?
- Вопрос задан более двух лет назад
- 2993 просмотра
Комментировать
Решения вопроса 1
Зверская Программа Чтобы Научиться Делать Выход Силой
Java Software Engineer
if (c == (‘q’)) break;
тут используйте не break, а System.exit(0);
https://www.tutorialspoint.com/java/lang/system_ex.
Ответ написан более двух лет назад
Хорошо, правда не очень понимаю разницу между System.exit(0); и break; (я совсем новичок).
И это все равно не решает проблемы: «Но как мне сделать так, чтобы программа завершалась если пользователь введет q вместо ЧИСЛА?»
Хорошо, правда не очень понимаю разницу между System.exit(0); и break; (я совсем новичок).
System.exit(0); используется для выхода из программы.
break; используется для выхода из цикла или например, из конструкции switch case
continue; используется для завершения (пропуска) текущей итерации цикла и продолжения цикла
Тут следующий момент, так как конструкция if у вас находится в конце, то пользователь не может выйти из любой точки программы, т.е. он должен ввести 2 числа и операнд, чтобы потом можно было ввести «q» и выйти из программы.
Соответственно, конструкцию if нужно перекинуть вверх.
Вот, ваш код (прокомментировал его):
public static void main(String[] args) < Scanner sc = new Scanner(System.in); /* * Если например, я хочу выйти из программы сразу же после запуска, то при вводе q * будет выброшено исключение, так как на вход я ожидается число (nexInt) * */ do < System.out.println(«Введите число»); int a = sc.nextInt(); sc.nextLine(); System.out.println(«Введите операцию»); String s = sc.nextLine(); System.out.println(«Введите число»); int b = sc.nextInt(); if (s.equals(«+»)) < int res = 0; res = a + b; System.out.println(res); >// Сюда не доходит даже char c = s.charAt(0); if (c == (‘q’)) < System.exit(0); >> while (true); >
DevelNext #5 — как сделать кнопку выхода из программы
Напишу простой вариант реализации, а вы изучите и посмотрите на преимущества и недостатки.
public class Main < public static void main(String[] args) < Scanner sc = new Scanner(System.in); do < System.out.println(«Введите первое число:»); int a = sc.nextInt(); sc.nextLine(); System.out.println(«Введите операцию:»); char operator = sc.nextLine().charAt(0); System.out.println(«Введите второе число:»); int b = sc.nextInt(); int result = 0; if (operator == ‘+’) < result = a + b; >else if (operator == ‘-‘) < result = a — b; >else if (operator == ‘*’) < result = a * b; >else if (operator == ‘/’) < result = a / b; >System.out.println(«Результат: » + result); sc.nextLine(); System.out.println(«Для выхода из программы введите — q»); char c = sc.nextLine().charAt(0); if (c == (‘q’)) < System.exit(0); >> while (true); > >
Конечно же нужно будет обработать ошибки. Можно заменить if else if на switch case и т.д.
Источник: qna.habr.com
Выход из программы.
Цель работы: Знакомство с азами программы Excel, освоение основных приемов работы с электронными таблицами, выполнение простейших арифметических операций и ознакомление с возможностями баз данных Excel.
С помощью электронных таблиц Excel для Windows можно вести разнообразные списки, каталоги и таблицы, составлять финансовые и статистические отчеты. Excel позволяет автоматически вычислять суммы по столбцам и строкам таблиц, взять проценты, среднее арифметическое, дисперсию, можно использовать множество стандартных функций: математических, финансовых, логических, статистических. Введенные и обработанные данные в Excel можно представить в виде не только разнообразно оформленных таблиц, но и виде различных графиков и диаграмм.
Способы запуска программы и выхода из электронных таблиц Excel для Windows полностью аналогичен порядку запуска редактора Word, и поэтому не вызовет затруднений.
Запуск и выход из программы.
Запуск программы.
Запустить электронные таблицы Excel можно двумя способами:
Способ 1. Выбрать Пуск Программы МS Оffice Microsoft Оffice Excel 2007.
Способ 2. Вы можете запустить Excel вместе с одновременной загрузкой в него определенного документа. Для этого надо на Рабочем столе выбрать Мой компьютер и найдя нужный Вам файл с расширением.XLS или.XLSХ, дважды щелкнуть на названии файла.
Выход из программы.
Существуют несколько способов для выхода из программы Excel для Windows:
Способ 1. Выберите команду меню Оffice -Выход из Excel и щелкните по нему.
Способ 2. Щелкните мышью (левой клавишей) по кнопке Закрыть системного меню в правом верхнем углу окна Excel для Windows. Этот значок дублирует команду Закрыть в Системном меню документа, расположенного в левом верхнем углу окна.
Когда Excel заканчивает свою работу, он проверяет все ли измененные файлы были сохранены. Если Excel находит не сохраненный файл, то на экран выводится диалоговое окно, в котором необходимо решить, сохранять или нет указанный файл. Выбирайте:
— ДА, если вы хотите сохранить файл и выйти из программы.
— НЕТ, если вы не хотите сохранять файл, но хотите выйти из программы.
— ОТМЕНИТЬ, если вы не хотите сохранять и не хотите выходить из программы.
Элементы окна Excel
После того, как программа Excel для Windows, запущена на экране появляется окно программы. Некоторые элементы этого окна такие же, как и у всех других программ Windows, а некоторые присущи только программе Excel.
Окно-приложение (окно, в котором представлена отдельная программа в среде Windows) содержит так называемую строку заголовка, которая находится наверху и обычно содержит название программы, в нашем случае это Мicrosoft Excel, и название файла который в данный момент о6рабоатывается.
Excel может обрабатывать одновременно несколько файлов, переключаясь с одного на другой.
Основные пункты горизонтального меню Excel и многие кнопки панелей инструментов совпадают с пунктами меню и кнопками окна редактора Word. Отличие горизонтального меню Excel от Word состоит в том, что в Excel имеется пункт меню ДАННЫЕ ипункт меню ФОРМУЛЫ. В этом пункте менюможно осуществить различные операции с данными колонок или строк таблицы, например, отсортировать данные по какому-либо признаку.
Рабочая область Excel представляет из себя размеченную таблицу, состоящую из ячеек одинакового размера. В одном файле находится несколько таблиц, образующих рабочую книгу. Внизу рабочего поля расположена строка закладок ЛИСТ 1, ЛИСТ 2 и ЛИСТ 3.
Основные понятия: ячейка, строка, столбец.
Ввод данных в ячейку. Строка формул.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
Операторы перехода
Java поддерживает три оператора перехода — break , continue и return . Они передают управление в другую часть вашей программы. Рассмотрим каждый из операторов подробно.
Использование оператора break
Оператор break в Java используется в трех случаях. Во-первых, как вы уже видели, он заканчивает последовательность операторов в ветвях оператора switch . Во-вторых, его можно использовать для выхода из цикла. В-третьих, он может применяться как «цивилизованная» форма оператора безусловного перехода goto . В этом разделе объясняются два последних случая. Использование break для выхода из цикла Используя break , вы можете форсировать немедленное завершение цикла, обходя условное выражение и любой остающийся код в теле цикла. Когда оператор break встречается внутри цикла, второй заканчивается и программное управление передается оператору, следующему за ним. Простой пример:
// Использование break для выхода из цикла. public class BreakLoop < public static void main(String[] args) < for (int i = 0; i < 100; i++) < if (i == 4) < break; // завершить цикл, если i = 4 >System.out.println(«i: » + i); > System.out.println(«Цикл завершен.»); > >
Эта программа генерирует следующий вывод:
i: 0 i: 1 i: 2 i: 3 Цикл завершен.
Хотя цикл for разработан здесь для выполнения своих операторов от 0 до 99 раз, оператор break заставляет его завершиться раньше, когда i равно 4. Оператор break может использоваться с любым из циклов Java, включая преднамеренно бесконечные циклы. Например, ниже показана предыдущая программа, закодированная при помощи цикла while . Вывод этой программы такой же, как у ее предшественницы.
// Использование break для выхода из while-цикла. public class BreakLoop2 < public static void main(String[] args) < int i = 0; while (i < 100) < if (i == 4) < break; // закончить цикл, если i = 4 >System.out.println(«i: » + i); i++; > System.out.println(«Цикл завершен.»); > >
При использовании внутри набора вложенных циклов оператор break будет выходить только из самого внутреннего цикла. Например:
// Использование break во вложенных циклах. public class BreakLoop3 < public static void main(String[] args) < for (int i = 0; i < 3; i++) < System.out.print(«Итерация » + i + «: «); for (int j = 0; j < 10; j++) < if (j == 4) < break; // закончить цикл, если j = 4 >System.out.print(j + » «); > System.out.println(); > System.out.println(«Цикл завершен.»); > >
Эта программа генерирует следующий вывод:
Итерация 0: 0 1 2 3 Итерация 1: 0 1 2 3 Итерация 2: 0 1 2 3 Цикл завершен.
Как вы видите, оператор break во внутреннем цикле вызывает завершение только этого цикла. Внешний цикл не затрагивается. Сделаем еще два замечания относительно break . Во-первых, в цикле может появиться несколько операторов break . Однако будьте осторожны. Слишком большое их количество создает тенденцию к деструктуризации вашего кода.
Во-вторых, break , который завершает оператор switch , воздействует только на данный switch -оператор (но не на включающие его циклы). Замечание: Break не проектировался в качестве нормального средства завершения цикла. Эту цель обслуживает условное выражение заголовка цикла. Оператор break следует использовать для прерывания цикла только тогда, когда возникают некоторые специальные ситуации.
Использование break как формы goto
В дополнение к применению в операторах switch и циклах break можно также использовать отдельно, в качестве «цивилизованной» формы оператора goto . Java не содержит оператора goto , потому что он выполняет переход произвольным и неструктурированным способом. Код, интенсивно использующий goto , обычно трудно понять и поддерживать. Он также отменяет некоторые оптимизации компилятора.
Существует, однако, несколько мест в программе, где goto — ценная и законная конструкция управления потоком выполнения. Например, goto может быть полезен, когда вы выходите из глубоко вложенного набора циклов. Чтобы обрабатывать такие ситуации, Java определяет расширенную форму оператора break . Используя ее, вы можете выйти из одного или большего количества блоков кода.
Этим блокам не нужно быть частью цикла или оператора switch . Это может быть любой блок. Далее, вы можете определить точно, где выполнение будет продолжено, потому что данная форма break работает с меткой и обеспечивает преимущества goto , минуя его проблемы. Оператор break с меткой имеет следующую общую форму: break label; Здесь label — имя метки, которая идентифицирует некоторый блок кода.
Когда эта форма break выполняется, управление передается из именованного блока кода (чья метка указана в операторе break ) на следующий за этим блоком оператор. Помеченный блок кода обязательно должен включать данный оператор break , но не требуется, чтобы это включение было непосредственным (т. е. break может включаться не прямо в блок со своей меткой, а во вложенный в него блок, возможно, тоже помеченный).
Это означает, что вы можете использовать помеченный оператор break , чтобы выйти из набора вложенных блоков. Но вы не имеете возможности использовать break для передачи управления блоку кода, который не включает оператор break . Для именования блока поместите метку в его начале (перед открывающей блок фигурной скобкой). Метка — это любой допустимый идентификатор Java, за которым следует двоеточие. После маркировки блока, его метку можно использовать как аргумент оператора break . Это приведет к тому, что выполнение будет продолжено с конца помеченного блока. Например, следующая программа содержит три вложенных блока, причем каждый имеет свою собственную метку. Оператор break осуществляет переход вперед, за конец блока, маркированного меткой second , пропуская два оператора println() .
// Использование break как цивилизованной формы goto. public class Break < public static void main(String[] args) < boolean t = true; first: < second: < third: < System.out.println(«Перед оператором break.»); if (t) < break second; // выход из блока second >System.out.println(«Данный оператор никогда не выполнится»); > System.out.println(«Данный оператор никогда не выполнится «); > System.out.println(«Данный оператор размещен после блока second.»); > > >
Выполнение этой программы генерирует следующий вывод:
Перед оператором break. Данный оператор размещен после блока second.
Одним из наиболее частых применений помеченного оператора break является выход из вложенных циклов. Например, в следующей программе внешний цикл выполняется только один раз:
// Использование break для выхода из вложенных циклов. public class BreakLoop4 < public static void main(String[] args) < outer: for (int i = 0; i < 3; i++) < System.out.print(«Итерация » + i + «: «); for (int j = 0; j < 100; j++) < if (j == 10) < break outer; // выйти из обоих циклов >System.out.print(j + » «); > System.out.println(«Эта строка никогда не будет выведена»); > System.out.println(«Цикл завершен.»); > >
Программа генерирует следующий вывод:
Итерация 0: 0 1 2 3 4 5 6 7 8 9 Цикл завершен.
Нетрудно заметить, что при прерывании внутреннего цикла до конца внешнего заканчиваются оба цикла. Имейте в виду, что вы не можете сделать break -переход к любой метке, которая не определена для включающего блока. Например, следующая программа недопустима и не будет компилироваться:
// Эта программа содержит ошибку. public class BreakErr < public static void main(String[] args) < one: for (int i = 0; i < 3; i++) < System.out.print(«Итерация » + i + «: «); >for (int j = 0; j < 100; j++) < if (j == 10) < break one; //He верно! >System.out.print(j + » «); > > >
Так как цикл, помеченный как one, не включает оператор break , передать управление этому блоку невозможно.
Использование оператора continue
Иногда полезно начать очередную итерацию цикла пораньше. То есть нужно продолжить выполнение цикла, но прекратить обработку остатка кода в его теле для данной частной итерации. На самом деле это — goto -переход мимо следующих операций тела в конец блока цикла.
Такое действие выполняет оператор continue . В циклах while и do while оператор continue вызывает передачу управления непосредственно условному выражению, которое управляет циклом. В цикле for управление переходит сначала к итерационной части оператора for и затем к условному выражению. Для всех трех циклов любой промежуточный код обходится. Пример программы, которая использует continue для печати двух чисел на каждой строке, приведен ниже:
// Демонстрирует continue. public class Continue < public static void main(String[] args) < for (int i = 0; i < 10; i++) < System.out.print(i + » «); if (i % 2 == 0) < continue; >System.out.println(«»); > > >
Этот код использует операцию % (остаток по модулю), чтобы проверять, является ли i четным. Если это так, цикл продолжается без печати символа новой строки (newline). Вывод программы:
0 1 2 3 4 5 6 7 8 9
Как и в операторе break , в continue можно определить метку, указывающую, какой включающий цикл следует продолжить. Пример программы, которая использует continue для печати треугольной таблицы умножения от 0 до 9.
// Использование continue с меткой. public class ContinueLabel < public static void main(String[] args) < outer: for (int i = 0; i < 10; i++) < for (int j = 0; j < 10; j++) < if (j >i) < System.out.println(); continue outer; >System.out.print(» » + (i * j)); > > System.out.println(); > >
Оператор continue в этом примере завершает цикл, вычисляющий j , и продолжает со следующей итерации цикла, управляемого i . Вывод этой программы:
0 0 1 0 2 4 0 3 6 9 0 4 8 12 16 0 5 10 15 20 25 0 6 12 18 24 30 36 0 7 14 21 28 35 42 49 0 8 16 24 32 40 48 56 64 0 9 18 27 36 45 54 63 72 81
В использовании continue полезен крайне редко. Одна из причин этого заключается в том, что Java обеспечивает богатый набор операторов цикла,которые устраивают большинство приложений. Однако, для тех специальных ситуаций, в которых необходимо досрочное прекращение итерации, оператор continue обеспечивает структурный способ выполнения этой задачи.
Оператор return
Последний оператор управления — return . Он используется для явного возврата из метода, т. е. передает программное управление обратно в вызывающую программу. Оператор return относят к категории операторов перехода. Хотя его полное обсуждение должно подождать до обсуждения методов, здесь представлен краткий обзор return . Оператор return можно использовать в любом месте метода для выполнения перехода обратно в вызывающую этот метод программу. Оператор return немедленно заканчивает выполнение метода, в котором он находится. Это иллюстрирует следующий пример:
// Демонстрирует return. public class Return < public static void main(String[] args) < boolean t = true; System.out.println(«Перед оператором return.»); if (t) < return; // возврат в вызывающую программу >System.out.println(«Этот оператор никогда не выполнится.»); > >
Здесь return выполняет возврат к Java-системе во время выполнения, т. к. именно эта система вызывает метод main() . Вывод этой программы:
Перед оператором return.
Можно заметить, что заключительный оператор println() не выполняется. В момент выполнения return управление передается обратно в вызывающую программу. И последнее замечание.
В предыдущей программе оператор if (t) необходим. Без него Java-компилятор выдал бы ошибку «недостижимый код», потому что он знал бы, что последний оператор println() никогда не будет выполняться. Чтобы предотвратить указанную ошибку, как раз и используется оператор if (t)он обманывает компилятор ради данной демонстрации. Ссылка на первоисточник: Операторы перехода
Источник: javarush.com