Напишите программу, которая считывает имя пользователя, а затем приветствует его как java

Обновлено: 03.07.2024

Никто во всей нашей лаборатории не смог решить эту задачу, поэтому мы должны решить ее в качестве домашнего задания. Мы должны предложить пользователю ввести свое имя и фамилию в одной строке. Предполагается, что метод main обрабатывает все операторы println и должен печатать имя как Last, First.

Я играл с этим кодом в течение часа и почти сдался. Любая помощь?

Прочитав следующее: "Никто во всей нашей лаборатории не смог решить эту проблему", я подумал: "О... подождите, что?" Любая IDE с подсветкой синтаксиса и проверкой "на лету" будет кричать во весь голос.

4 ответа 4

Вот список шагов, которые вам нужно сделать:

Получить ввод [Пример: "Джон Смит"]

Разделить его на две части [Есть несколько способов сделать это]

substring() возвращает часть строки.

indexOf() находит определенный символ в строке.

Он принимает начальное значение и конечное значение.

В этом случае мы начинаем с начала и заканчиваем, когда находим пробел.

Чтобы получить фамилию, мы начинаем с пробела и заканчиваем в конце строки.

Вы также можете комбинировать это с методом .trim(), который удаляет пробелы в начале/конце строк.

Наконец, мы возвращаем объединенное значение:

И последнее. Хорошим соглашением является заставить ваши методы работать так, как они названы.

Поскольку ваше имя называется "changeNameFormat()", нам, вероятно, следует передать ему имя, которое мы хотим изменить.

Затем в главном мы можем получить входные данные или даже передать их в качестве параметра.

Я поместил его в метод changeNameFormat, и он стал красным. он предлагает мне создавать поля и классы в каждой строке.

Я добавил несколько дополнительных примечаний. Хорошим соглашением является изменение методов, как я описал внизу :) надеюсь, это поможет!

Java не поддерживает такой синтаксис. Вместо этого вам нужно будет использовать что-то вроде String.split(String), и вы можете комбинировать это с форматированным выводом, например

"Не удается найти символ" будет palindrome() , который является вызовом метода, но вы нигде его не определили (и он не имеет отношения к проблеме). Вы также получите это на линии

потому что в этот момент вы не объявили lastName или firstName .

«Не заявление» — это строка firstName, lastName = . , который не является допустимым синтаксисом в Java (хотя он есть в некоторых языках, где вы можете присваивать значение сразу двум переменным). Вам нужно найти способ разделить ввод на две части и назначить одну часть для firstName и одну часть для lastName ; но в нынешнем виде эта строка не имеет смысла в Java.

"Код недостижимости" – это возвращаемое значение firstName . Предыдущая строка возврата завершает выполнение метода, поэтому ваш код никогда не дойдет до оператора return firstName. Вы должны печатать вещи, а не возвращать их.

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

Ввод — это текст, написанный пользователем и прочитанный программой. Ввод всегда читается как строка. Для чтения входных данных мы используем инструмент Scanner, который поставляется с Java. Инструмент можно импортировать для использования в программе, добавив команду import java.util.Scanner; до начала кадра основной программы ( открытый класс . ). Сам инструмент создается с помощью Scanner scanner = new Scanner(System.in); .

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

Точнее, ввод считывается с помощью метода nextLine() сканера. Вызов scan.nextLine() остается ждать, пока пользователь что-нибудь напишет. Когда пользователь что-то пишет и нажимает ввод, предоставленная строка присваивается строковой переменной (в данном случае message ). Затем программа может ссылаться на переменное сообщение позже — в приведенном выше примере переменное сообщение упоминается в команде печати.

Когда программа запущена, ее вывод может выглядеть так, как показано в примере ниже. В этом примере пользователь написал текст «Hello world» — в примерах пользовательский ввод отмечен красным цветом.

Написать сообщение: Привет, мир Привет, мир

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

Дальше давайте сделаем шаг назад и посмотрим, что же такое String message = . даже значит.

Основы работы со строками

Как вы могли заметить, в программировании мы имеем в виду "строки", а не "текст". Термин "строка" является сокращением от "строка символов", которая описывает, как компьютер видит текст на более фундаментальном уровне: как последовательность отдельных символов.

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

На практике переменные представляют собой именованные контейнеры, которые содержат информацию определенного типа и имеют имя. Строковая переменная объявляется в программе путем указания типа переменной (String) и ее имени (например, myString). Обычно переменной также присваивается значение во время ее объявления. Вы можете присвоить значение, поставив после объявления знак равенства, за которым следует значение и точка с запятой.

Строковая переменная с именем message, которой присвоено значение "Hello world!" объявляется следующим образом:

При создании переменной в программе становится доступным определенный контейнер, на содержимое которого впоследствии можно будет ссылаться. На переменные ссылаются по их имени. Например, создание и печать строковой переменной выполняется так, как показано ниже:

Строка, заключенная в кавычки языка программирования, называется "строковым литералом", т. е. строкой с указанным значением. Распространенной ошибкой программирования является попытка заключать имена переменных в кавычки. Если бы строковая переменная message была заключена в кавычки, программа напечатала бы текст «message» вместо «Hello world!». текст, хранящийся в переменной сообщения.

Конкатенация — объединение строк

Строка для печати может быть сформирована из нескольких строк с помощью оператора +. Например, программа ниже печатает «Hello world!» на одной строке.

Тот же метод можно использовать для соединения строкового литерала и значения строковой переменной.

Привет, мир! . и вселенная!

То же самое можно сделать с любым количеством строк.

Меня зовут Бонд, Джеймс Бонд

Чтение строк

Считыватель.nextLine(); Команда считывает ввод пользователя и возвращает строку. Если мы потом хотим использовать строку в программе, ее нужно сохранить в строковую переменную — String message = scan.nextLine(); . Значение, сохраненное в переменной, можно использовать повторно. В приведенном ниже примере пользовательский ввод печатается дважды.

Напишите сообщение: оно будет напечатано дважды. Это будет напечатано дважды. Это будет напечатано дважды.

Входная строка как часть вывода

Мы заметили в сообщении "Привет, Ада Лавлейс!" Убедиться, что строковые литералы и строковые переменные можно соединять с помощью оператора +. В приведенном ниже примере демонстрируется программа, которая принимает пользовательский ввод и печатает его, объединенный со строковым литералом.

Напишите что-нибудь: это Вы написали это

Выполнение программы ожидает ввода

Когда в выполнение программы поступает оператор, который пытается прочитать ввод от пользователя (команда reader.nextLine() ), выполнение останавливается и ожидает. Выполнение продолжается только после того, как пользователь введет некоторые данные и нажмет Enter.

В приведенном ниже примере программа запрашивает у пользователя три строки. Сначала программа печатает Write первая строка: , а затем ожидает ввода пользователем. Когда пользователь вводит какой-либо текст, программа печатает Write the second string: , а затем снова ожидает ввода пользователем. Это продолжается в третий раз, после чего программа печатает все три строки.

Напишите первую строку: Первая Напишите вторую строку: вторая Напишите третью строку: третья Вы написали: Первая вторая третья

В предыдущем примере мы сохранили пользовательский ввод в трех разных строковых переменных. Это можно сделать, если все переменные имеют разные имена (в примере это имена first , second и Third )

Мы можем формировать более сложные тексты, содержимое которых меняется в зависимости от ввода пользователя, используя больше строк. В приведенном ниже примере пользователю рассказывают немного больше о написанных им текстах — обратите внимание, что порядок, в котором печатаются строки, может быть изменен. В приведенном ниже примере третья входная строка печатается первой.

Напишите первую строку: One Напишите вторую строку: two Напишите третью строку: three Последней строкой, которую вы написали, было три, которой предшествовало два. Первая струна была одна. Все вместе: раз, два, три

Не забудьте проверить свои баллы по шарику в правом нижнем углу материала!

Одной из сильных сторон Java являются огромные библиотеки кода, доступные вам. Это код, который был написан для выполнения определенных задач. Все, что вам нужно сделать, это указать, какую библиотеку вы хотите использовать, а затем вызвать метод в действие. Один действительно полезный класс, который обрабатывает ввод данных от пользователя, называется классом Scanner. Класс Scanner можно найти в библиотеке java.util.Чтобы использовать класс Scanner, вам нужно сослаться на него в своем коде. Это делается с помощью импорта ключевого слова.

импортировать java.util.Scanner;

Операция import должна располагаться непосредственно над оператором Class:

импортировать java.util.Scanner;

открытый класс StringVariables

Это сообщает java, что вы хотите использовать определенный класс в определенной библиотеке — класс Scanner, который находится в библиотеке java.util.

Следующее, что вам нужно сделать, это создать объект из класса Scanner. (Класс — это просто набор кода. Он ничего не делает, пока вы не создадите из него новый объект.)

Для создания нового объекта сканера используется следующий код:

Сканер user_input = новый сканер( System.in );

Таким образом, вместо того, чтобы настраивать переменную типа int или String, мы настраиваем переменную Scanner. Мы назвали наш user_input. После знака равенства у нас есть ключевое слово new. Это используется для создания новых объектов из класса. Создаваемый нами объект относится к классу Scanner. В круглых скобках мы должны указать java, что это будет системный ввод (System.in).

Чтобы получить пользовательский ввод, вы можете вызвать в действие один из многих методов, доступных для вашего нового объекта Scanner. Один из этих методов называется next. Получается следующая строка текста, которую пользователь вводит на клавиатуре:

Строка first_name;
first_name = user_input.next();

Итак, после нашего объекта user_input мы вводим точку. Затем вы увидите всплывающий список доступных методов. Дважды щелкните «Далее», а затем введите точку с запятой, чтобы закончить строку. Мы также можем напечатать некоторый текст, чтобы подсказать пользователю:

Строка first_name;
System.out.print("Введите ваше имя: ");
first_name = user_input.next();

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

Мы также добавим запрос на ввод фамилии:

String имя_семьи;
System.out.print("Введите фамилию: ");
имя_семьи = user_input.next();

Это тот же код, за исключением того, что java теперь будет сохранять все, что вводит пользователь, в нашу переменную family_name вместо нашей переменной first_name.

Чтобы распечатать ввод, мы можем добавить следующее:

Строка полное_имя;
полное_имя = первое_имя + " " + фамильное_имя;

System.out.println("Вы " + полное_имя);

Мы установили еще одну строковую переменную, full_name. Мы сохраняем все, что находится в двух переменных first_name и family_name. Между ними мы добавили пробел. Последняя строка выводит все это в окне вывода.

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

Запускайте программу, пока в окне вывода не появится следующее:

Java теперь приостанавливается до тех пор, пока вы не введете что-нибудь на клавиатуре. Он не будет прогрессировать, пока вы не нажмете клавишу ввода. Поэтому щелкните левой кнопкой мыши после «Введите свое имя:», и вы увидите, как ваш курсор мигает. Введите имя и нажмите клавишу ввода на клавиатуре.

После того, как вы нажмете клавишу ввода, java возьмет все, что было введено, и сохранит его в имени переменной слева от знака равенства. Для нас это была переменная с именем first_name.

Затем программа переходит к следующей строке кода:

Введите фамилию и снова нажмите клавишу ввода:

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

Поэтому мы использовали класс Scanner для получения данных от пользователя. Все, что было напечатано, сохранялось в переменных. Затем результат был напечатан в окне вывода.

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

Но как насчет обратной стороны? Что происходит, когда мы хотим передать компьютеру некоторую информацию? Почти все приложения, с которыми вы взаимодействуете ежедневно, предоставят вам способы предоставления им информации. Просто взгляните на строку поиска браузера над этим сайтом.

В этом уроке мы рассмотрим, как писать программы на Java, которые принимают пользовательский ввод.

Код

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

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

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

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

Поток выполнения

Поигравшись с этой программой, вы заметите, что она фактически останавливает поток выполнения, ожидая ввода от пользователя. В предыдущих программах, которые мы написали, кажется, что они выполняются и выполняются за миллисекунды. Но в этом случае, если вы подождете 10 минут, прежде чем решите что-то ввести, компьютер будет ждать вместе с вами.

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

Многие программы, с которыми вы столкнетесь (и в конечном итоге напишете), полагаются на то, что пользователь скажет им, что делать и когда можно остановиться. Как только мы обнаружим более сложные темы, мы в конечном итоге сможем писать программы, которые имеют меню и дают пользователю выбор того, что он хочет делать! Но здесь все начинается.

Подведение итогов

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

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

Tна его странице есть пример решения одного из упражнений из раздела Введение в программирование с использованием Java.

Упражнение 2.3:

Напишите программу, которая запрашивает имя пользователя, а затем приветствует его по имени. Прежде чем выводить имя пользователя, преобразуйте его в буквы верхнего регистра. Например, если пользователя зовут Фред, программа должна ответить "Здравствуйте, ФРЕД, приятно познакомиться!".

Чтобы прочитать имя, введенное пользователем, эта программа использует одну из процедур ввода из нестандартного класса TextIO. Таким образом, эта программа может быть запущена только в том случае, если этот класс доступен для программы. Для согласованности я также буду использовать TextIO для вывода, хотя с тем же успехом я мог бы использовать System.out .

Имя — это последовательность символов, поэтому оно представляет собой значение типа String . Программа должна объявить переменную типа String для хранения имени пользователя. Я объявляю другую переменную для хранения имени пользователя со всеми буквами в имени, преобразованными в верхний регистр. Преобразование может быть трудным, за исключением того, что объекты String имеют функцию, которая выполняет преобразование. Если userName — это переменная, которая ссылается на имя, которое вводит пользователь, то вызов функции usersName.toUpperCase() возвращает строку, полученную путем замены любых строчных букв в имени на прописные.

В классе TextIO есть несколько функций, которые можно использовать для чтения строк: getWord(), getlnWord() и getln(). Первые две подпрограммы читают только одно слово, поэтому, если пользователь введет «Дэвид Дж. Экк», он прочитает только имя «Дэвид». Процедура getln() прочитает всю строку и, таким образом, получит полное имя. Для этой программы я использую getln() , но вы можете использовать только имя.

(Кстати, для этой программы getWord() и getlnWord() будут эквивалентны. Они возвращают одно и то же значение. Вторая версия подпрограммы, getlnWord(), затем отбрасывает оставшуюся часть пользовательской строки ввода. Однако, поскольку эта программа выполняет только одну операцию ввода, не имеет значения, будет ли она отброшена. Это будет иметь значение только тогда, когда придет время прочитать второе значение из ввода.)

Читайте также: