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

标签 java string input output string-length

我对 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 Palmer 时,我必须一次输入一个名称,末尾加一个空格,然后按Enter 输入下一个名称。它还将中间首字母的长度显​​示为 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());


}

}

最佳答案

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

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

String name = input.nextLine();

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

关于java - Java 中使用 nextLine() 获取名称长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52881728/

相关文章:

java - 如何修复此 Oauth 2.0 重定向错误

java - 用于打印具有 List<Map<String,Object>> 之类代码的 java 代码的 google code prettify 问题

php - 如何轻松地从数组中删除最后一个逗号?

css - 如何限制html5数字输入中的最大宽度

html - 如何让此编码在 Google Chrome 中运行?

java - 无法理解调试报告

java - Java中如何获取内存类型?

python - 字符串比较失败

java - 在Java中使用正则表达式分割字符串?

c++ - 从每行都有一个字符串的文件中读取数据,并且可能有也可能没有整数