Как написать счетчик на java

Класс Десятичный счетчик на Java

Опишите класс, реализующий десятичный счетчик, который может увеличивать или уменьшать свое значение на единицу в заданном диапазоне. Предусмотрите инициализацию счетчика значениями по умолчанию и произвольными значениями. Счетчик имеет методы увеличения или уменьшения состояния, и позволяющее получить его текущее состояние. Написать код, демонстрирующий все возможности класса.

Решение

Если вам не понятны какие-либо части решения, загляните в урок и практикум.

Класс счетчика будет содержать поля: минимальное, максимальное и текущее значения. При этом, стоит обработать следующие случаи:

  1. при инкременте текущее значение стало больше максимального – сделаем его равным минимальному;
  2. при декременте текущее значение стало меньше минимального – сделаем его равным максимальному;
  3. в конструктор передано минимальное значение больше максимального – поменяем их местами;
  4. в конструктор передано текущее значение больше максимального – сделаем его равным максимальному;
  5. к конструктор передано текущее значение меньше минимального – сделаем его равным минимальному.

В условии задачи не указано как именно нужно обработать такие ситуации – реализация выбрана «на свое усмотрение».

Исходный код модуля Counter.java:

Из «интересного» в этом классе – конструирование. Конструктор от трех параметров содержит нетривиальную логику, чтобы ее не дублировать в других конструкторах – можно использовать конструкцию this() , в результате внутри одного конструктора будет вызван другой.

Исходный код модуля Main.java :

В этом модуле создается три объекта счетчика, затрагивающих разные случаи, рассмотренные выше:

  • у первого счетчика изначально корректный интервал и начальное значение;
  • у второго – min > max , поэтому интервал [6, 4] преобразуется в [4, 6] . Кроме того, current > max , поэтому current = 6 ;
  • у третьего – min > max , поэтому интервал [5, 3] преобразуется в [3, 5] . Начальное значение после этого выставляется в 3 – эта ситуация обрабатывается в строке 23 модуля Counter .

Затем, каждый счетчик инкрементируется дважды, при этом:

  • значение первого и третьего счетчиков увеличатся на 2, так как не произойдет переполнения;
  • второй счетчик равен max, поэтому после первого инкремента он получает значение min (4) , следующий инкремент приведет к current = 5 .

Затем, по аналогичной схеме выполняется 20 операций декремента, результаты работы приведены на рисунке:

Источник

Изучаем цикл for java

Повторяющееся исполнение набора инструкций называется циклом. Циклы в Java делятся на три типа:

  1. While ;
  2. For ;
  3. Do While
  • Выше перечислено три разных типа циклов, которые используются с одинаковой целью, и отличаются только синтаксисом;
  • Из-за синтаксических различий может отличаться и их образ действия. Вскоре мы рассмотрим эти различия.

Java-цикл For и его различные типы

For – самый популярный цикл из трёх доступных. Всё, что можно делать при помощи цикла while Java , легко делается и с помощью цикла for .

Существует два типа цикла for :

  1. Обычный цикл for ;
  2. Вложенный for .

Обычный цикл for

  • Когда элемент управления натыкается на цикл for , он сначала выполняет инициализацию. Эта часть выполняется один раз;
  • Затем контроллер переходит к разделу с условиями. Если оценка условий выдает результат true , то контроллер переходит к телу цикла.

Если оценка даёт результат false , то элемент управления выходит из for и выполняет условие, следующее после цикла.

Когда условие даёт значение true , выполняется тело цикла. Затем контроллер переходит к разделу incr/decr . Здесь указываются переменные инкремента или декремента.

После выполнения раздела incr/decr , контроллер переходит к разделу условий. Если результат будет true , то выполняется тело цикла. Затем переход к разделу incr/decr , а потом к разделу условий. Этот процесс будет повторяться до тех пор, пока оценка условий будет равно true .

Как написать цикл на Java

В приведённом выше примере переменная инициализируется значением 1 .

Это действие происходит всего один раз. После чего контроллер переходит к условию a :

В цикле в Java , когда мы создаём переменную при инициализации, она автоматически освобождается по окончании цикла. Такую переменную нельзя использовать за пределами цикла. Если это необходимо, то создайте новую переменную с таким же именем вне цикла.

int x=len; — не валидна, так как len уже освободилась;
int len=p; — валидна, так как рассматривается в качестве новой переменной.

В приведенной выше программе возникает ошибка, так как переменная i освобождается после выхода из цикла Java .

В программе, приведенной выше, ошибки не возникает, так как в ней используется переменная i , которая была объявлена за пределами цикла.

  1. В теле цикла в Java может быть любое количество инструкций;
  2. Все они должны быть заключены в фигурные скобки;
  3. Если в теле цикла есть только одна инструкция, то фигурные скобки необязательны.

В разделе инициализации может быть любое количество инструкций, но все они должны отделяться запятыми.

По окончании инициализации этот раздел завершается точкой с запятой. В следующем примере вложенного цикла Java мы поместили в раздел инициализации три инструкции, разделенные запятыми: (a=10) , (b=20) и (c=30) .

  • Подобно разделу с инициализацией, в разделе incr/decr также может быть несколько инструкций, указанных через запятую.

Но в разделе условий цикла в Java ничего не отделяется запятыми. Все предполагаемые условия должны комбинироваться при помощи операторов AND или OR и образовывать единое условие.

Читайте также:  Как люди поднимаются на башенный кран

Вложенные циклы

Помните, что Java цикл в связанном списке алгоритма можно помещать циклы внутрь других циклов. Такие циклы называются вложенными.

В данном примере контроллер доходит до раздела инициализации за пределами цикла.

Объяснение приведённого выше примера :

Значением a = 11 . Затем контроллер переходит к разделу условий. Если условие выдаёт значение true , контроллер переходит к телу цикла и выполняет statementA .

Затем контроллер переходит к разделу инициализации внутреннего цикла, а после этого – к разделу условий.

Если условия выполняется, программа переходит к телу цикла и выполняет statementB . После этого контроллер переходит к разделу с увеличением значения во внутреннем цикле for , а после – к разделу условий внутреннего цикла. Вложенный цикл Java повторяется до тех пор, пока внутреннее условие выдаёт значение true .

Внутрь другого цикла в Java for можно поместить любую конструкцию. Здесь нет ограничения по количеству конструкций.

Чтобы выйти из цикла for в середине тела, можно использовать оператор break . Он выведет контроллер из цикла, независимо от условий в объявлении цикла.

Если мы хотим перейти к следующей итерации цикла с середины тела ( пропустив оставшиеся инструкции текущей итерации ), можно использовать оператор continue .

Перед тем, как написать цикл на Java , нужно знать, что раздел условий должен выдавать результат в виде логического выражения. В разделе инициализации можно создавать переменные, что невозможно в разделе увеличения. Ниже представлен валидный код.

Иногда инициализация происходит в тот момент, когда контроллер доходит до цикла for . В таком случае в разделе инициализации можно написать пустую инструкцию ( пусть это будет просто точка с запятой) . Аналогичным образом можно пропустить раздел увеличения. Если использовать пустое условие ( просто a ), то результат будет расцениваться как true . То есть, все последующие применения будут валидными.

Если мы запишем цикл for как for(;;) , и в нём не будет break или return , то это бесконечный цикл Java . Приведенные ниже циклы являются бесконечными.

Пример 1: for( ; ; )
Пример 2: for(init; true; incr)

Цикл for в стиле foreach

Этот тип циклов используется для перехода по набору элементов в строгом порядке ( от начала к концу ). Набором элементов может быть массив, ArrayList , LinkedList или любая другая коллекция.

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

В этом примере цикл повторяется четыре раза ( количество элементов в массиве ), и каждый раз выводится очередной элемент i ( от 0 до 3 ).

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

В данном случае переменная x получает каждое значение из массива ( по одному значению на итерацию ), а затем выводится. Этот подход ( foreach ) подходит для обслуживания всех элементов в списке. Если нам нужны отдельные фрагменты списка, то можно использовать обычный цикл в Java .

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

В приведённом выше примере внешний цикл в Java проходит по массиву ссылок ( где каждая ссылка обращается к массиву ), а внутренний цикл проходит по каждому элементу текущего массива.

Пожалуйста, оставляйте ваши отзывы по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, отклики, дизлайки, лайки, подписки!

Валентин Сейидов автор-переводчик статьи « What Are Java Loops – Definition & Explanation »

Источник

Как написать счетчик на java

Еще одним видом управляющих конструкций являются циклы. Циклы позволяют в зависимости от определенных условий выполнять определенное действие множество раз. В языке Java есть следующие виды циклов:

Цикл for

Цикл for имеет следующее формальное определение:

Рассмотрим стандартный цикл for:

Первая часть объявления цикла — int i = 1 создает и инициализирует счетчик i. Счетчик необязательно должен представлять тип int . Это может быть и любой другой числовой тип, например, float. Перед выполнением цикла значение счетчика будет равно 1. В данном случае это то же самое, что и объявление переменной.

Вторая часть — условие, при котором будет выполняться цикл. В данном случае цикл будет выполняться, пока i не достигнет 9.

И третья часть — приращение счетчика на единицу. Опять же нам необязательно увеличивать на единицу. Можно уменьшать: i— .

В итоге блок цикла сработает 8 раз, пока значение i не станет равным 9. И каждый раз это значение будет увеличиваться на 1.

Нам необязательно указывать все условия при объявлении цикла. Например, мы можем написать так:

Определение цикла осталось тем же, только теперь блоки в определении у нас пустые: for (; 😉 . Теперь нет инициализированной переменной-счетчика, нет условия, поэтому цикл будет работать вечно — бесконечный цикл.

Либо можно опустить ряд блоков:

Этот пример эквивалентен первому примеру: у нас также есть счетчик, только создан он вне цикла. У нас есть условие выполнения цикла. И есть приращение счетчика уже в самом блоке for.

Цикл for может определять сразу несколько переменных и управлять ими:

Цикл do

Цикл do сначала выполняет код цикла, а потом проверяет условие в инструкции while. И пока это условие истинно, цикл повторяется. Например:

В данном случае код цикла сработает 7 раз, пока j не окажется равным нулю. Важно отметить, что цикл do гарантирует хотя бы однократное выполнение действий, даже если условие в инструкции while не будет истинно. Так, мы можем написать:

Хотя переменная j изначально меньше 0, цикл все равно один раз выполнится.

Цикл while

Цикл while сразу проверяет истинность некоторого условия, и если условие истинно, то код цикла выполняется:

Читайте также:  Счетчик liveinternet куда ставить

Операторы continue и break

Оператор break позволяет выйти из цикла в любой его момент, даже если цикл не закончил свою работу:

Когда счетчик станет равным 5, сработает оператор break, и цикл завершится.

Теперь сделаем так, чтобы если число равно 5, цикл не завершался, а просто переходил к следующей итерации. Для этого используем оператор continue :

В этом случае, когда выполнение цикла дойдет до числа 5, программа просто пропустит это число и перейдет к следующему.

Источник

Циклы в Java

Что такое циклы

Циклы с предусловием: условие выполнения определяется перед первой итерацией.

Циклы с постусловием: условие выполнения определяется после первой итерации (поэтому они всегда выполняются минимум один раз). Полезны, когда нужно выполнять некое действие, пока не реализуется некое условие: например, считывать ввод пользователя, пока он не введет слово “stop”.

Циклы со счетчиком: количество итераций определяется смоделированным счетчиком. В условии цикла задается его начальное и конечное значение. Каждую итерацию счетчик наращивается. Мы можем заранее определить количество итераций.

Эти циклы бывают полезны, когда нужно перебрать все элементы в какой-то коллекции. Циклы со счетчиком называют “циклами для. ”. “Для каждого элемента некоторой коллекции осуществить следующие действия”.

Допустимы случаи, когда выполнение цикла можно прервать до достижения его условия. Например, если у нас есть коллекция из 100 чисел и нам необходимо понять, содержит ли она отрицательные числа. Мы можем начать перебор всех чисел, используя цикл “для”. Но когда мы найдем первое отрицательное число, нам не обязательно перебирать оставшиеся числа. Мы можем прервать выполнение цикла, если его дальнейшее выполнение не имеет смысла. Подобные ситуации называют прерыванием цикла.

Безусловные циклы — циклы, которые выполняются бесконечно. Например: “Пока 1=1, печатать “1=1””. Такая программа будет выполняться, пока ее вручную не прервут.

Данные циклы тоже бывают полезны, когда используются вместе с прерыванием цикла “изнутри”. Используйте их осторожно, чтобы не спровоцировать зависание программы.

Подробнее с циклами в языке программирования Java можно познакомиться на 4-ом уровне курса JavaRush. В частности, с циклами while и for.

Циклы в Java

while , do.. while и for можно использовать в качестве безусловных циклов. Сравнить синтаксис циклов в разных языках программирования можно на четвертом уровне обучения курса JavaRush. Например циклов for и while. Рассмотрим кратко каждый из представленных типов.

Источник

Урок 2. Простейший счетчик.

В этом уроке мы создадим простейшее приложение в котором будут затронуты следующие темы: работа с виджетами textview и imagebutton, преобразование типов данных, обработка событий (нажатие кнопки).

После установки Android Studio (далее Студия) можно приступать к созданию своей первой программы.

Учтите, что на данный момент Студия постоянно обновляется, поэтому внешний вид окон и другие детали могут отличаться от данного примера.

В качестве языка программирования для Android используется Java. Для создания пользовательского интерфейса используется XML.

По традиции, заложенной в прошлом веке, каждый программист должен был написать «Hello World!» (Здравствуй, Мир!) в качестве первой программы. Времена меняются, и программа «Hello World!» уже встроена в среду разработки под Android. Но так как Hello World мы уже запускали в первом уроке, несколько усложним задачу — добавим на экран две кнопки увеличивающие и уменьшающие некий счетчик и собственно отобразим на форме сам счетчик.

Разобьём задачу на две части. Сначала запустим готовую программу Hello World! без написания кода и разберем её, а потом уже модифицируем под новые задачи.

Создание нового проекта

Запускаем Студию и выбираем File | New Project…. Появится диалоговое окно мастера.

Поле Application name: — понятное имя для приложения, которое будет отображаться в заголовке приложения. По умолчанию у вас уже может быть My Application. Заменим на MyCount. В принципе вы могли написать здесь и Здравствуй, мир!, но у Android есть замечательная возможность выводить нужные строки на телефонах с разными языками. Скажем, у американца на телефоне появится надпись на английском, а у русского — на русском. Поэтому в первоначальных настройках всегда используются английские варианты, а локализованные строки подготовите позже. Необходимо сразу вырабатывать привычку к правильному коду.

Поле Company Domain: служит для указания вашего сайта. По умолчанию там может появиться ваше имя как пользователя компьютера. Если сайт у вас есть, то можете ввести его адрес, либо придумайте какое-нибудь название. Введённое имя запоминается и будет автоматически подставляться в следующих новых проектах. Экономия, однако.

Поле Package name: формирует специальный Java-пакет на основе вашего имени из предыдущего поля. В Java используется перевёрнутый вариант для наименования пакетов, поэтому сначала идёт ru, а потом уже название сайта. Пакет служит для уникальной идентификации вашего приложения, когда вы будете его распространять. Если сто человек напишет сто приложений с названием «Cat», то будет непонятно, где приложение, написанное разработчиком Василием Котовым. А приложение с именем пакета ru.mydomain.cat проще найти. Обратите внимание, что Гугл в своей документации использует пакет com.example в демонстрационных целях. Если вы будете просто копировать примеры из документации и в таком виде попытаетесь выложить в Google Play, то у вас ничего не выйдет — это название зарезервировано и запрещено к использованию в магазине приложений. Кнопка Edit позволяет отредактировать подготовленный вариант. Например, вы пишете приложение на заказ и вам нужно использовать имя пакета, утверждённое заказчиком, а не ваш вариант по умолчанию.

Третье поле Project location: позволяет выбрать место на диске для создаваемого проекта.

Нажимаем на кнопку Next и переходим к следующему окну. Здесь мы выбираем типы устройств, под которые будем разрабатывать своё приложение. В большинстве случае мы будет писать для смартфонов и планшетов, поэтому оставляем флажок у первого пункта. Также вы можете писать приложения для Android TV, Android Wear и Glass (я не устанавливал необходимый SDK для гуглоочков, поэтому последний флажок у меня не доступен).

Читайте также:  Как переделать катушки на модуль ваз 2112 инжектор 16 клапанов

Кроме выбора типа устройств, надо выбрать минимальную версию системы, под которую будет работать приложение. До мая 2014 года предлагалось ставить поддержку Android 2.2, летом было API 15 (Android 4.0), а сейчас (декабрь 14) рекомендуют ставить API 16 (Android 4.1). Если вам нужно поддерживать старые устройства, то выберите свой вариант. Лично я предпочитаю использовать API 10 (Android 2.3.3), т.к. до сих пор иногда встречаю людей с телефонами на данной версии ОС.

Если щёлкнуть по ссылке Help me choose, то откроется окно с графиком.

Идём дальше и снова нажимаем кнопку Next.

Здесь следует выбрать внешний вид экрана приложения.

Предложенные шаблоны позволяют сэкономить время на написание стандартного кода для типичных ситуаций. Опытный разработчик может вручную написать любой из предложенных вариантов, используя первый случай Add No Activity, где никаких заготовок не будет.

Пару лет назад был только один шаблон. Список шаблонов постоянно пополняется и теперь их больше. Перечислю часть из них.

  • Blank Activity
  • Blank Activity with Fragment
  • Fullscreen Activity
  • Google Maps Activity
  • Google Play Services Activity
  • Master/Detail Flow

Шаблон Blank Activity предназначен для обычных телефонов. На картинке над названием шаблона вы видите приблизительный вид приложения с использованием данной заготовки. Для учебных программ в 99% подойдёт этот вариант. Практически все примеры на сайте написаны с помощью данного шаблона.

Шаблон Master/Detail Flow предназначен для планшетов с реализацией двухпанельного режима. Шаблон Fullscreen Activityможно использовать для игр, когда требуется дополнительное пространство без лишних деталей. Другие шаблоны нужны для создания приложений с гуглокартами или сервисами Google Play.

Итак, мы выбрали вариант Blank Activity и переходим к следующему окну.

Activity Name я по старой привычке (Delphi) называю обычно Form1. Title — название заголовка окна. Например можно — написать «Мой счетчик»

Ну вот, мы закончили с первоначальной настройкой. Нажимаем кнопку Finish и смотрим, что дальше будет.

А дальше студия формирует проект и создаёт необходимую структуру из различных файлов и папок. Поначалу глаза разбегаются.

В левой части среды разработки на вкладке Project появится иерархический список из папок, которые относятся к проекту.

Содержание проекта

Вкладка Project содержит две основные папки: app и Gradle Scripts. Первая папка app содержит все необходимые файлы приложения — код, ресурсы картинок и т.п. Вторая папка служит для различных настроек, управления проектом и многих других вещей.

Сейчас нас должна интересовать папка app. Раскройте её. В ней находятся три папки: manifest, java, res.

manifest

Папка manifest содержит единственный файл манифеста AndroidManifest.xml. Если вы уже раньше использовали Eclipse, то возьмите на заметку, что часть настроек из манифеста в студии была перенесена в Gradle.

В этом файле должны быть объявлены все активности, службы, приёмники и контент-провайдеры приложения. Также он должен содержать требуемые приложению разрешения. Например, если приложению требуется доступ к сети, это должно быть определено здесь. «AndroidManifest.xml» можно рассматривать, как описание для развертывания Android-приложения.

Более подробно о структуре манифеста читайте в дополнительной статье Файл AndroidManifest.xml

Папка содержит две подпапки — рабочая и для тестов. Рабочая папка имеет название вашего пакета и содержит файлы классов. Сейчас там один класс MainActivity. Папку для тестов можете не трогать.

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

  • drawable — в этих папках содержатся графические ресурсы, предназначенные для разных размеров экрана.
  • layout — в данной папке содержатся xml-файлы, описывающие внешний вид форм и различных элементов форм. После создания проекта там уже имеется файл activity_main.xml, который отвечает за внешний вид главного окна приложения.
  • menu — здесь находятся ресурсы для меню, например, файл menu_main.xml, который отвечает за меню главного окна приложения.
  • values — тут у нас располагаются какие-либо строковые ресурсы, ресурсы цветов, тем, стилей и измерений, которые мы можем использовать в нашем проекте.

Со временем вы будет свободно ориентироваться в этих папках, пока не забивайте себе голову.

Работа с проектом — Здравствуй, Мир!

Как уже говорилось, программа Hello, World! уже встроена в любой новый проект, поэтому вам даже не нужно ничего писать. Просто нужно запустить проект и получить готовую программу!

Для изучения вам нужно открыть два файла — (скорее всего он уже открыт) и activity_main.xml (res/layout) в центральной части Студии. Если файлы не открыты, то откройте их самостоятельно двойным щелчком для редактирования (или просмотра). Таким способом вы можете открыть любой нужный вам файл.

Не будем пока изучать код, а просто нажмём на зелёный треугольник Run (Shift+F10) на панели инструментов в верхней части студии для запуска приложения.

Если вы не настроили эмулятор, значит вы не читали предыдущий урок. Настройте сначала эмулятор и запускайте проект снова.

Если всё сделали правильно, то в эмуляторе загрузится ваша программа. Поздравляю!

Итак, если программа загрузилась в эмуляторе, то увидите окно приложения с надписью Hello World. Заголовок у программы будет также Hello World. Все эти строки можно найти в файле res/values/strings.xml и отредактировать при желании.

Теперь посмотрим на код. Сначала изучим activity_main.xml.

Смотреть его можно в двух режимах — Design и Text.

Источник

Поделиться с друзьями
Дядя Валера