使用 nextLine() 获取 Java 中的名称长度

Getting length of names in Java with nextLine()

我对 Java 很陌生。我是第一个 Java class,我们只是在做基础工作。我应该编写一个程序,提示用户使用 spaces 输入他们的名字、中间名和姓氏。然后以全部大写显示名字的长度、中间名的长度、首字母和全名。这是 class 示例

示例输出:

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 Palmer 时,我必须一次输入一个名字 space最后按回车键输入下一个名字。它还将中间首字母的长度显​​示为 4 而不是 3。我知道只需输入一个字符串名称 = input.nextLine(),我就可以将所有输入都放在一行上,这允许我的输入格式寻找,但如果我这样做,我不知道如何获得中间名或首字母的长度。抱歉,这是一个愚蠢的问题,但这是我的第一个 Java class,我们只是在学习基础知识。

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());

  }

 }

这是有效的更新代码,唯一的问题是它没有将全名输出中的 space 计算为 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());


}

}

I have to input the name one at a time with a space at the end and then press enter to input the next name.

让我们看看你是如何得到这个名字的:

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

您在这里阅读的是三行单独的内容,这就是为什么您必须在名称的每一部分之间按回车键。相反,您应该立即阅读整个名称:

String name = input.nextLine();

现在您需要将名称解析为单独的部分。我会把这个留给你弄清楚该怎么做。您应该查看 the documentation of the String class 以找到可能有助于完成问题解决的任何函数。

看看你是怎么做到的(许多例子中的一个)- 也许这对你将来有帮助,因为你可能还不知道数组(我不知道你是第一个class,我在阅读所有内容之前就解决了这个问题 - 顺便说一下,对不起!)

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));
    }

}