Получение длины имен в Java с помощью nextLine () - PullRequest
0 голосов
/ 18 октября 2018

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

Пример вывода:

Enter a first name middle name and surname
Peggy Sue Palmer

Length of your name: 16 characters

Length of your middle name: 3 characters

Your initials are PSP

PEGGY SUE PALMER

До сих пор я работал над некоторым кодом и могу правильно получить некоторые выходные данные, но когда я иду, чтобы войти в Peggy SueПалмер Я должен ввести имя по одному с пробелом в конце, а затем нажать клавишу ввода, чтобы ввести следующее имя.Кроме того, он отображает длину среднего инициала как 4 вместо 3. Я знаю, что у меня может быть все входное значение в одной строке, если у меня есть только один вход String name = input.nextLine (), который разрешает формат ввода, который я ищуно если я это сделаю, я понятия не имею, как получить длину среднего имени или инициалы.Извините, это глупый вопрос, но это мой первый класс Java, и мы только изучаем основы.

package tracy2prog1;
import java.util.Scanner;
public class Tracy2prog1 {

public static void main(String[] args) {
    //create new scanner class
    Scanner input = new Scanner(System.in);
    //prompt user to enter first middle and last name
    System.out.println("Please enter your first middle and last name with spaces between them");
    String firstname = input.nextLine();
    String middlename = input.nextLine();
    String lastname = input.nextLine();
    System.out.println(firstname.length() + middlename.length() + lastname.length());
    System.out.println("The length of your middle name is " + middlename.length() + " characters");
    System.out.println("Your initials are " + firstname.charAt(0) + middlename.charAt(0) +lastname.charAt(0));
    System.out.println(firstname.toUpperCase() + middlename.toUpperCase() + lastname.toUpperCase());

  }

 }

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

package tracy2prog2;
import java.util.Scanner;
public class Tracy2prog2 {

public static void main(String[] args) {
    //create new scanner class
            Scanner input = new Scanner(System.in);
            //prompt user to enter first middle and last name
            System.out.println("Please enter your first middle and last name with spaces between them");
            String firstname = input.next();
            String middlename = input.next();
            String lastname = input.next();
            System.out.print("Your name is ");
            System.out.println(firstname.length() + middlename.length() + lastname.length() + " characters");
            System.out.println("The length of your middle name is " + middlename.length() + " characters");
            System.out.println("Your initials are " + firstname.charAt(0) + middlename.charAt(0) +lastname.charAt(0));
            System.out.println(firstname.toUpperCase() + " " + middlename.toUpperCase() + " " + lastname.toUpperCase());


}

}

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Посмотрите, как вы можете это сделать (один из многих примеров) - Возможно, это поможет вам в будущем, поскольку вы, вероятно, еще не знаете массивы (я не знал, что вы учились в первом классе,Я пошел к проблеме, прежде чем читать все - не делайте этого, кстати, извините!)

import java.util.Scanner;

public class Tracy2prog1 {

    public static void main(String[] args) {
        //create new scanner class
        Scanner input = new Scanner(System.in);
        //prompt user to enter first middle and last name
        System.out.println("Please enter your first middle and last name with spaces between them");

        //Here you will have your names without " ", then its length is 2 characters shorter
        String[] names = input.nextLine().split(" ");

        //As your names are in an array now, you can get then directly
        System.out.println(names[0].length() + names[1].length() + names[2].length());
        System.out.println("The length of your middle name is " + names[1].length() + " characters");
        System.out.println("Your initials are " + names[0].charAt(0) + names[1].charAt(0) +names[2].charAt(0));
        System.out.println(names[0].toUpperCase() + " " + names[1].toUpperCase() + " " + names[2].toUpperCase());

        //Peggy Sue Palmer
        //Considering you did this: String[] names = input.nextLine().split(" ");
        //your array is ["Peggy", "Sue", "Palmer"]
        //then array[0] is "Peggy"
        //then "Peggy".length == 5
        //plus: names[0].charAt(0) means "Peggy".charAt(0) which is "P"
        System.out.println("The length of your first name is " + names[0].length() + " characters");
        System.out.println("The initial of your first name is " + names[0].charAt(0));
    }

}
0 голосов
/ 18 октября 2018

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

Давайте посмотрим, как вы получите имя:

String firstname = input.nextLine();
String middlename = input.nextLine();
String lastname = input.nextLine();

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

String name = input.nextLine();

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

...