在Java中打印缩写名称

在Java中打印缩写名称,java,string,Java,String,我试图用Java编写代码,根据输入输出缩写名称。例如如果输入是“John Alex Smith”,则输出是“Smith,J.A.”,如果输入是“John Smith”,则输出是“Smith,J.”。如果输入的是名字、中间名和姓氏,则我的代码工作得非常好,但如果只输入名字和姓氏,则代码不起作用,我不知道为什么 import java.util.Scanner; public class LabProgram { public static void main(String[] args)

我试图用Java编写代码,根据输入输出缩写名称。例如如果输入是“John Alex Smith”,则输出是“Smith,J.A.”,如果输入是“John Smith”,则输出是“Smith,J.”。如果输入的是名字、中间名和姓氏,则我的代码工作得非常好,但如果只输入名字和姓氏,则代码不起作用,我不知道为什么

import java.util.Scanner; 

public class LabProgram {
   public static void main(String[] args) {
      Scanner scnr = new Scanner(System.in);
      
      String firstName = scnr.next();
      String middleName = scnr.next();
      String lastName = scnr.next();
      char middleInitial = middleName.charAt(0);
      char firstInitial = firstName.charAt(0);
      
      if (middleName.length() > 0 && lastName.length() == 0)   {
         lastName = middleName;
         System.out.println(lastName + ", " + firstInitial + ".");   }
     
      else if (lastName.length() > 0) {
         System.out.println(lastName + ", " + firstInitial + "." + middleInitial + ".");  }

      
      /* Type your code here. */
   }
}

我假设你输入了2个字符串,然后只按回车键就可以得到名字和姓氏?在这种情况下,
firstName
将具有第一个字符串
middleName
将有第二个字符串,然后
lastName
将是一个空字符串。您的if-else中没有支持该选项的条件,因此不会打印任何内容

您需要将其更改为检查:

  • 如果
    firstName
    middleName
    为null或空,则这是一个错误
  • 否则,姓氏是否不为空?如果是这样,那就是3个命名输入
  • 否则它是2个命名输入

如果名字是“何塞·爱德华多·桑托斯·塔瓦雷斯·梅洛·席尔瓦”?结果应该是“Silva,J.E.S.T.M.”吗?看起来是这样的,但你必须重新思考如何处理名称的无限部分。你应该解释一下,当你说不起作用时,它意味着什么。输入最多限制为三个名称。它在java.base/java.util.Scanner.throwFor的线程“main”java.util.NoSuchElementException中给出了这个错误`异常(Scanner.java:937)位于java.base/java.util.Scanner.next(Scanner.java:1478)位于LabProgram.main(LabProgram.java:9)`