Напишите программу которая считывает имя пользователя и затем приветствует его java
wikiHow работает по принципу вики, а это значит, что многие наши статьи написаны несколькими авторами. При создании этой статьи над ее редактированием и улучшением работали, в том числе анонимно, 65 человек(а).
Java — это объектно-ориентированный язык программирования, созданный Джеймсом Гослингом в 1995 году, что означает выражение переменных как объектов с полями (которые являются атрибутами, описывающими объект) и методов (действия, которые объект может совершать). Java — это язык, позволяющий писать программы, которые могут быть запущены под любой виртуальной машиной Java. Поскольку это достаточно объемный по количеству слов язык программирования, его достаточно просто понять и изучить даже новичкам. В этом руководстве изложено введение к программированию на Java.
Для того чтобы начать писать программы на Java, в первую очередь установите среду разработчика. Многие программисты используют интегрированную среду разработки (англ. Integrated development environment — IDE), такую как Eclipse или Netbeans, но можно создать программу и без нее.
Любой программы по типу Блокнота будет достаточно для Java-программирования. Некоторые программисты предпочитают использовать текстовые редакторы на основе vim и emacs. Также существует достаточно хороший текстовый редактор, который можно установить как на ОС Windows так и Linux (Mac, Ubuntu и так далее) — Sublime Text. Его мы и будем использовать в данном обзоре.
- Если ваш компьютер работает под управлением операционной системы Windows и среда переменных работает некорректно, она может выдавать ошибку javac . Прочтите статью об установке комплекта разработчика приложений, чтобы получить более детальную информацию об установке для исключения этой ошибки.
Для начала мы создадим программу, которая будет выдавать надпись Hello World. Создайте новый файл в текстовом редакторе и сохраните его как "HelloWorld.java". "HelloWorld" — это имя класса, которое должно совпадать с названием файла, это важно.
Задайте класс и основной метод. Основной метод public static void main(String[] args) будет применяться при каждом запуске программы и будет устанавливаться в каждой последующей программе Java.
- Рассмотрим компоненты этой строки кода:
- System обращается к системе с указанием выполнять определенные действия.
- Out сообщает системе, что мы собираемся ввести какие-то данные.
- Println строка ввода — сообщает системе о необходимости вывести значение на экран.
- Скобки вокруг ("Hello World") обозначают, что метод System.out.println () выбирает это значение в качестве параметра.
- В конце каждой строчки кода нужно ставить точку с запятой.
- Java чувствителен к регистру, поэтому писать значения метода, переменных, и имя класса необходимо с учетом него.
- Блоки кода, которые относятся к определенному методу, разделяются фигурными скобками.
Соедините все вместе. В конечном итоге ваша программа Hello World должна выглядеть следующим образом:
Сохраните файл и откройте командную строку или терминал, чтобы скомпилировать программу. Зайдите в папку, где вы сохранили файл HelloWorld.java и введите в Javac (оптимизирующий компилятор языка java) HelloWorld.java. Таким образом, вы дадите знать компилятору, что хотите преобразовать файл. Если в процессе будут всплывать ошибки, компилятор уведомит вас о том, что вы сделали не так. В идеале у вас вообще не должно быть никаких уведомлений от компилятора в процессе преобразования файла. По окончании компиляции заглянете в папку, где был сохранен файл HelloWorld.java, — там должен появиться файл HelloWorld.class. Его и будет использовать для запуска виртуальная машина Java.
Запустите программу. Наконец-то мы добрались до этого момента! В командной строке или терминале введите in java HelloWorld. Виртуальная машина поймет таким образом, что вы хотите запустить класс HelloWorld. В консоли должна появиться надпись HelloWorld.
Мы рассмотрим класс Java под названием Scanner, который позволяет сохранить и обработать ввод пользователя с клавиатуры, превращая его в Java-код. Класс Scanner имеет разные методы получения информации в зависимости от типа переменной.
Одна из сильных сторон Java - это огромные доступные библиотеки кода. Это код, который был написан для выполнения определенной работы. Все, что вам нужно сделать, это указать, какую библиотеку вы хотите использовать, а затем вызвать метод в действие.
Один действительно полезный класс в Java, который обрабатывает ввод пользователя, называется классом Scanner . Класс Scanner можно найти в библиотеке java.util.
Чтобы использовать класс Scanner, вам нужно сослаться на него в своем коде. Это делается с помощью импорта ключевых слов.
Оператор import должен находиться чуть выше оператора Class:
Это говорит Java, что вы хотите использовать определенный класс в определенной библиотеке - класс Scanner, который находится в библиотеке java.util.
Следующее, что вам нужно сделать, это создать объект из класса Scanner. (Класс - это просто набор кода. Он ничего не делает, пока вы не создадите из него новый объект.)
Для создания нового объекта Scanner напишите код:
Вместо того, чтобы устанавливать переменную int или переменную String, мы настраиваем переменную Scanner. Мы назвали ее user_input.
После знака равенства у нас есть ключевое слово new. Оно используется для создания новых объектов из класса.
Мы создаем объект из класса Scanner. В скобках мы говорим Java, что это будет System Input и русская кодировка, чтоб ввод был распознан как русский текст (System.in, "Cp1251").
Чтобы получить пользовательский ввод, вы можете вызвать в действие один из методов, доступных для объекта Scanner.
Методы класса Scanner, которые обрабатывают ввод пользователя в Java:
- next(): получает введенную строку до первого пробела
- nextLine(): получает всю введенную строку
- nextInt(): получает введенное число int
- nextDouble(): получает введенное число double
- nextBoolean(): получает значение boolean
- nextByte(): получает введенное число byte (число от -128 до 127)
- nextFloat(): получает введенное число float
- nextShort(): получает введенное число short (число от -32768 до 32767)
Для нашего нового объекта Scanner мы будем использовать метод next:
Чтоб увидеть весь список доступных методов, введите после нашего объекта user_input точку. Нам нужен next. Дважды кликните по next и введите точку с запятой, чтобы завершить строку. Также мы напечатаем некоторый текст, как предложение о вводе данных:
Обратите внимание, что мы использовали print, а не println, как в прошлый раз. Разница между ними заключается в том, что println переместит курсор на новую строку после вывода, а print оставит курсор на той же строке.
Также мы добавим предложение о вводе фамилии:
Это тот же код, за исключением того, что java теперь будет хранить все, что пользователь вводит, в нашу переменную family_name вместо переменной first_name.
Чтобы распечатать ввод, мы можем добавить следующее:
Мы установили еще одну переменную String - full. В ней мы сохраним все, что есть в двух переменных first_name и family_name (в строке ввода ввел пользователь). Между ними мы добавили пробел. Последняя строка выводит все это в окно вывода.
Адаптируйте ваш код так, чтобы он соответствовал следующему изображению:
Запустите программу, и в окне «Вывод» отобразится следующее:
На этом этапе Java приостанавливается, пока вы не введете что-либо на клавиатуре. Работа кода не продолжиться, пока вы не нажмете клавишу ввода. Итак, кликните левой кнопкой мыши после «Введите имя:», и вы увидите, что курсор мигает. Введите имя и нажмите клавишу ввода на клавиатуре.
После того, как вы нажмете клавишу ввода, java возьмет то, что было набрано, и сохранит его в имени переменной слева от знака равенства. Для нас это была переменная с именем first_name.
Затем программа переходит к следующей строке кода:
Введите фамилию и снова нажмите клавишу ввода:
Пользовательский ввод завершен, а остальная часть программы выполняется. Это вывод двух имен. Конечный результат должен выглядеть так:
Таким образом, мы использовали класс Scanner для получения ввода от пользователя. Все, что было напечатано, сохранилось в переменных. Затем результат был напечатан в окне вывода.
Еще один полезный класс для получения пользовательского ввода и отображения результатов - это класс JOptionPane. Он находится в библиотеке javax.swing. С помощью класса JOptionPane мы можем вызывать окно ввода с клавиатуры и сохранять полученные данные.
Класс JOptionPane позволяет вам иметь такие поля ввода:
Давайте для этого адаптируем наш код из предыдущего урока и добавим несколько опций.
Первое, что нужно сделать, это обратиться к библиотеке, в которой находится наш класс JOptionPane:
Эта строка кода говорит Java, что мы хотим использовать класс JOptionPane, расположенный в библиотеке javax.swing.
Вы можете начать новый проект, как это сделаю я. Вы уже должны знать, как создать новый проект. Для тех, кто забыл: Как создать проект java в NetBeans. У меня имя класса будет InputBoxes, а имя проекта - userinput.
Добавьте строку импорта в свой новый проект. Окно с кодом должно выглядеть примерно так:
Причина желтого волнистого подчеркивания в том, что мы еще не использовали класс JOptionPane. Она исчезнет, как только мы это сделаем.
Чтобы получить поле ввода, в которое может вводить текст пользователь, мы можем использовать метод showInputDialog из JOptionPane. Мы снова сохраним входные данные прямо в переменную name, как в прошлый раз. Поэтому добавьте следующую строку в ваш основной метод:
Как только вы введете точку после JOptionPane, вы увидите следующий всплывающий список:
Добавьте следующий код, чтобы получить фамилию пользователя:
Соедините их вместе и добавьте текст:
Весь ваш код должен выглядеть так:
Обратите внимание на строку кода внизу:
Как следует из названия, это гарантирует, что программа завершается. Но это также возвращает все на свои места, удаляя все созданные объекты из памяти.
Теперь запустите свой код. Быстрый способ запустить программу в NetBeans - кликнуть правой кнопкой мыши в любом месте окна с кодом. В появившемся меню выбрать Run File.
Вы увидите поле ввода имени. Введите в него что-нибудь и нажмите ОК:
Когда появится поле ввода Ваша фамилия, введите фамилию и нажмите ОК:
Нажмите OK, чтобы завершить программу.
Упражнение 1
Упражнение 2
Упражнение 3
Вместо JOptionPane.INFORMATION_MESSAGE попробуйте это:
Упражнение A
Справка для упражнения А
Вы должны использовать переменную String, чтобы получить числа от пользователя:
Но вы не можете умножить строку на строку. Вам нужно преобразовать строки в целые числа. Вы можете преобразовать строку в целое число следующим образом:
Вы вводите Integer, затем точку. После точки введите parseInt (). В круглых скобках parseInt введите имя строковой переменной, которую вы пытаетесь преобразовать.
Установите переменную int для площади нашего прямоугольника. Затем вы сможете произвести умножение и назначить результат этой же строке:
Упражнение B
Программа завершится сбоем, если вы введете значения с плавающей запятой для ширины или высоты прямоугольника с предыдущего упражнения. Как бы вы решили это?
Если вы выполнили вышеупомянутое упражнение, подумайте, вам действительно необходимо Integer.parseInt? Что еще вы можете использовать?
Теперь вы знаете о классе JOptionPane, его пользу и как его можно использовать. Отлично, мы будем двигаться дальше. Давайте попробуем несколько условий IF.
В предыдущих лекциях мы познакомились с командами вывода на экран. Для этого мы использовали объект System.out , и его методы print() и println() . Просто и удобно.
Но, как вы уже наверное догадываетесь, одного вывода на экран недостаточно. Цель большинства программ — сделать что-то полезное для пользователя. Поэтому очень часто нужно, чтобы пользователь мог вводить данные с клавиатуры.
Как и для вывода, для ввода данных тоже есть специальный объект — System.in . Но, к сожалению для нас, он не настолько удобен, как нам бы хотелось. Этот объект позволяет считывать данные с клавиатуры по одному символу за раз.
Поэтому мы воспользуемся еще одним классом, который в паре с объектом System.in даст нам все, что нужно. В Java уже давно есть классы на все случаи жизни. С одним из них мы сейчас и познакомимся.
2. Класс Scanner
Класс Scanner (полное имя java.util.Scanner ) умеет считывать данные из разных источников: консоль, файлы, интернет. Если мы хотим, чтобы он считывал данные с клавиатуры, мы должны передать ему объект System.in в качестве параметра – источника данных. А уж объект типа Scanner сам разберется, что с ним делать.
Считывание с клавиатуры с помощью объекта типа Scanner будет выглядеть примерно так:
Код Пояснение Создаем объект класса Scanner .
Читаем с клавиатуры строку текста .
Читаем с клавиатуры число .Выглядит вроде несложно, но так ли все просто на самом деле?
Думаю, у вас появилась куча вопросов, и сейчас мы на них ответим.
Но для начала продемонстрируем пример полной программы, где используется класс Scanner :
3. Создание объекта Scanner
Первый вопрос – что это за строка Scanner console = new Scanner(System.in); ?
Такая строка может сбивать с толку, однако вы будете постоянно встречать похожие вещи. Так что, думаем, настало время объяснить, что тут написано.
Вспомним, как мы обычно создаем переменную с текстом:
Сначала мы пишем тип переменной ( String ), затем ее имя ( str ) и, наконец, после знака равно пишем значение.
В нашей странной строке на самом деле все то же самое:
Все, что находится слева от знака равно — это объявление переменной типа Scanner по имени console . Можно было назвать ее, например, s или scanner , или даже keyboard . Тогда код выглядел бы так:
Думаю, теперь все стало гораздо понятнее.
А код, что находится справа от знака равно , немного сложнее. Имеется в виду new Scanner(System.in); Но тут тоже ничего космического.
В этом коде мы говорим Java-машине: создай новый объект (слово new ) типа Scanner и передай в него в качестве параметра то, из чего новосозданный объект Scanner будет брать данные — объект System.in .
После выполнения всей этой строки у нас появится переменная по имени console типа Scanner , с помощью которой наша программа сможет считывать данные с клавиатуры.
4. Вызов методов
В приведенном выше примере наша переменная console типа Scanner хранила у себя внутри ссылку на объект типа Scanner .
Чтобы вызвать методы объекта, на который ссылается переменная, нужно после имени переменной написать точку, а затем имя метода и параметры. Общий вид этой команды такой:
Если вы не планируете передавать в функцию параметры, нужно писать просто пустые скобки:
5. Ввод данных с консоли
Вводить данные с клавиатуры, когда у нас есть объект типа Scanner , очень легко.
Чтобы считать с клавиатуры строку , нужна команда:
Когда программа дойдет до выполнения этой строки, она приостановится и будет ждать, пока пользователь введет данные и нажмет клавишу enter. После этого все, что ввел пользователь, будет сохранено в переменную str .
Чтобы считать с клавиатуры число , нужна команда:
Тут все аналогично предыдущей команде. Когда программа дойдет до выполнения этой строки, она приостановится и будет ждать, пока пользователь введет данные и нажмет клавишу enter. После этого все, что ввел пользователь, будет преобразовано в число и сохранено в переменную number .
Если пользователь ввел данные, которые невозможно преобразовать в целое число, в программе возникнет ошибка, и она завершится.
Чтобы считать с клавиатуры дробное число , нужна команда:
Эта команда полностью аналогична команде nextInt() , только она проверяет, что введенные данные можно преобразовать в число double .
Пример программы, которая считывает с клавиатуры два числа и выводит их сумму:
Пользователь может ввести несколько чисел в одной строке, разделив их пробелами: такая ситуация будет корректно обработана методами класса Scanner . Однако числа будут считаны программой только после того, как пользователь нажмет Enter .
Считай с клавиатуры три строки. А затем: 1. Выведи на экран третью строку в неизменном виде. 2. Выведи на экран вторую строку, предварительно преобразовав ее к верхнему регистру. 3. Выведи на экран первую строку, предварительно преобразовав ее к нижнему регистру. Пример ввода: Строка Номер РАЗ Втор
Считай с клавиатуры три целых числа. Выведи на экран их среднее арифметическое. Пример ввода: 50 101 201 Пример вывода: 117 Среднее арифметическое - это число, равное сумме всех чисел, деленной на их количество. Используй деление без остатка.
6. Другие методы класса Scanner
Это, кстати, были не все методы класса Scanner . Полный список будет выглядеть примерно так:
Метод Описание Считывает данные и преобразует их в тип byte Считывает данные и преобразует их в тип short Считывает данные и преобразует их в тип int Считывает данные и преобразует их в тип long Считывает данные и преобразует их в тип float Считывает данные и преобразует их в тип double Считывает данные и преобразует их в тип boolean Считывает одно «слово». Слова разделяются пробелами или enter Считывает целую строку Есть еще методы, которые позволяют проверить тип еще не считанных данных (чтобы знать, каким методом их считывать).
Метод Описание Там тип byte ? Его можно будет преобразовать к byte ? Там тип short ? Его можно будет преобразовать к short ? Там тип int ? Его можно будет преобразовать к int ? Там тип long ? Его можно будет преобразовать к long ? Там тип float ? Его можно будет преобразовать к float ? Там тип double ? Его можно будет преобразовать к double ? Там тип boolean ? Его можно будет преобразовать к boolean ? Там есть еще одно слово? Там есть еще одна строка? 7. Ввод данных из строки
Мы уже говорили выше, что класс Scanner умеет считывать данные из разных источников. И один из этих источников — строка текста .
Выглядеть это будет примерно так
Вместо объекта System.in мы при создании объекта типа Scanner передаем в него строку – str . И теперь объект scanner будет считывать данные из строки. Пример:
Привет! Наше сегодняшнее занятие будет особенным! До этого при решении задач и написании программ алгоритм был простым: мы пишем какой-то код, запускаем метод main() , программа делает то, что от нее требуется, и завершает свою работу. Но теперь всё изменится! Сегодня мы научимся по-настоящему взаимодействовать с программой: мы научим её реагировать на наши действия! Возможно, ты уже понял, к чему мы клоним. Эту лекцию посвятим подробному разбору одного из классов языка Java – Scanner. Этот класс пригодится, если тебе нужно будет считывать данные, которые вводят юзеры. Перед тем, как мы перейдем к изучению кода, скажи, тебе когда-нибудь приходилось встречаться с таким устройством как сканер? Наверняка да. Изнутри строение сканера достаточно сложное, но суть его работы довольно проста: он считывает те данные, которые пользователь в него вводит (например, паспорт или страховой полис) и сохраняет считанную информацию в памяти (например, в виде изображения). Так вот, сегодня ты создашь свой собственный сканер! С документами он, конечно, не справится, а вот с текстовой информацией — вполне :) Поехали!
Java Scanner Class
Первое и главное, с чем нам нужно познакомиться, — класс java.util.Scanner . Его функциональность очень проста. Он, словно настоящий сканер, считывает данные из источника, который ты для него укажешь. Например, из строки, из файла, из консоли. Далее он распознает эту информацию и обрабатывает нужным образом. Приведем самый простой пример: Мы создали объект сканера и указали для него источник данных (строку с текстом). Метод nextLine() обращается к источнику данных (нашему тексту с четверостишием), находит там следующую строку, которую он еще не считывал (в нашем случае — первую) и возвращает ее. После чего мы выводим ее на консоль: Вывод в консоль: Мы можем использовать метод nextLine() несколько раз и вывести весь кусок поэмы: Каждый раз наш сканер будет делать один шаг вперед и считывать следующую строку. Результат работы программы — вывод в консоль: Как мы уже говорили, источником данных для сканера может быть не только строка, но и, например, консоль. Важная новость для нас: если раньше мы только выводили туда данные, теперь будем вводить данные с клавиатуры! Посмотрим, что еще умеет класс Scanner: Метод nextInt() считывает и возвращает введенное число. В нашей программе он используется для того, чтобы присвоить значение переменной number . Это уже больше похоже на настоящий сканер! Программа просит пользователя ввести в строку любое число. После того, как пользователь это сделал, программа благодарит его, выводит на консоль итог своей работы и завершается. Но у нас осталась одна серьезная проблема. Пользователь может ошибиться и ввести что-то не то. Вот пример, когда наша текущая программа перестанет работать: Попробуем ввести вместо числа строку “JavaRush”: Вывод в консоль: Ой-ой, все плохо -_- Во избежание подобных ситуаций нам нужно придумать способ проверки данных, которые вводит пользователь. Например, пользователь вводит что угодно, кроме числа, хорошо бы вывести в консоль предупреждение, что введенная информация не является числом, а если все в порядке — вывести текст подтверждения. Но для этого нам надо фактически “заглянуть в будущее” — узнать, что там дальше в нашем потоке. Умеет ли Scanner в Java это делать? Еще как умеет! И для этого у него есть целая группа методов: hasNextInt() — метод проверяет, является ли следующая порция введенных данных числом, или нет (возвращает, соответственно, true или false). hasNextLine() — проверяет, является ли следующая порция данных строкой. hasNextByte() , hasNextShort() , hasNextLong() , hasNextFloat() , hasNextDouble() — все эти методы делают то же для остальных типов данных. Попробуем изменить нашу программу для чтения числа: Теперь наша программа проверяет, является ли следующий введенный символ числом или нет. И только в случае, если является, выводит подтверждение. Если же ввод не прошел проверку, программа это замечает и просит попробовать снова. По сути, ты можешь общаться с объектом Scanner и заранее узнавать, какой тип данных тебе ожидать. “Эй, сканер, что там дальше будет? Число, строка, или еще что? Число? А какое — int , short , long ?” Такая гибкость дает тебе возможность выстраивать логику своей программы в зависимости от поведения пользователя. Еще один важный метод, на который стоит обратить внимание — useDelimiter() . В этот метод передается строка, которую вы хотите использовать в качестве разделителя. Например, мы неожиданно увлеклись японской поэзией и решили считать с помощью сканера несколько хокку великого поэта Мацуо Басе. Даже если три разных стиха переданы нам одной корявой строкой, мы легко можем их разделить и красиво отформатировать: Мы используем в качестве разделителя строк метод useDelimeter() класса Scanner : он отвечает за деление входящих данных на части. В нашем случае для разделения строк в качестве аргумента передаётся и используется одиночная кавычка ( "'" ). Следующий за этой кавычкой текст отображается на новой строке, так как в цикле while мы используем метод println() класса System для считывания данных. В результате в консоли у нас появится красивый вывод, совсем как в книгах: В этом же примере есть еще один метод, на который нужно обязательно обратить внимание — close() . Как и любой объект, работающий с потоками ввода-вывода, сканер должен быть закрыт по завершении своей работы, чтобы больше не потреблять ресурсы нашего компьютера. Никогда не забывай о методе close() ! Вот и все! Как видишь, класс Scanner достаточно прост в использовании и очень полезен! :)
Читайте также: