Алгоритм для вывода инициалов имени

#java

#java

Вопрос:

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

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

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

 import java.util.*;
public class Initials
{
     public static void main (String[] args)
     {
        //create Scanner to read in data
        Scanner myKeyboard = new Scanner(System.in); 


        //prompt user for input – use print to leave cursor on line
        System.out.print("Please enter Your full Name , Middle name And Surname: ");
        String name = myKeyboard.nextLine();

                String initials1 = name.substring(0, 1); 
                int initials2 = name.

                //output Initials
                System.out.println ("Initials Are "   initials1   initials2   initials3);


     }
}
  

Комментарии:

1. после этого вам не хватает некоторого кода int initials2 = name. , пожалуйста, исправьте

2. Это сайт вопросов и ответов, а не форум. Задайте более подходящее название.

3. если это домашнее задание, пожалуйста, отметьте его как таковое

Ответ №1:

Пользователи будут вводить строку типа

«первый средний последний»

поэтому вам нужно получить каждое слово из строки.

Добыча при разделении.

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

Ответ №2:

Во-первых, функция nextLine вернет полное имя. Во-первых, вам нужно .split() ввести строку name через пробел, возможно. Для этого требуется правильно отформатированная строка от пользователя, но я бы пока не стал об этом беспокоиться.

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

 StringBuilder builder = new StringBuilder(3);
for(int i = 0; i < splitStringArray.length; i  )
{
    builder.append(splitStringArray[i].substring(0,1));
}

System.out.println("Initials Are "   builder.toString());
  

Комментарии:

1. вы действительно должны хотеть «научить его ловить рыбу», а не просто «давать ему рыбу».

2. @hvgotcodes В некоторых случаях я соглашусь, но он также сказал, что он также делает очень простые вещи. Если он действительно заинтересован в обучении, он может выбрать изучение того, что говорится в коде, что научит его большему, рассуждая в своей собственной логике.

3. скорее всего, он просто возьмет это и отправит как часть домашнего задания

4. @hvgotcodes по моему опыту, те, которые делают именно это, в любом случае не преуспевают в классе программирования. Если он действительно выберет этот маршрут, он уже роет могилу для своей оценки. Я бы предпочел думать, что не все новички здесь просто ищут помощь в домашнем задании.

5. 1 Я согласен с Дэвидом. Мы не собираемся помогать студентам в их тестах и т. Д. Так что, если они «обманывают» свою домашнюю работу, они все равно в конечном итоге получат плохую оценку в классе. И я знаю кучу людей из колледжа, которые закончили его по специальности CS и не могут устроиться на работу, потому что они действительно не знали материала. Поэтому, если они используют наши ответы и не потрудятся их понять, они просто убьют себя.

Ответ №3:

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

 Scanner myKeyboard = new Scanner(System.in); 

System.out.print("Please enter Your full Name , Middle name And Surname: ");
String name = myKeyboard.nextLine();

String[] nameParts = name.split(" ");

char firstInitial = nameParts[0].charAt(0);
char middleInitial = nameParts[1].charAt(0);
char lastInitial = nameParts[2].charAt(0);

System.out.println ("Initials Are "   firstInitial   middleInitial   lastInitial);
  

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