Java 如何从字符串中提取名字、中间名和姓氏。以及当没有输入中间名时如何识别

Java 如何从字符串中提取名字、中间名和姓氏。以及当没有输入中间名时如何识别,java,Java,我需要做以下工作: 许多文档对人名使用特定格式。编写一个程序,其输入为:firstName middleName lastName,输出为:lastName,firstName middleInitial 这是一本教科书,所以我还没有学过如何分割弦。这是我在网上能找到的全部,但这不是教科书所要求的。到目前为止,我已经学会了如何比较字符串,获取字符串长度,分支,开关语句,字符串操作 import java.util.Scanner; 公共类实验室计划{ 公共静态void main(字符串[]ar

我需要做以下工作:

许多文档对人名使用特定格式。编写一个程序,其输入为:firstName middleName lastName,输出为:lastName,firstName middleInitial

这是一本教科书,所以我还没有学过如何分割弦。这是我在网上能找到的全部,但这不是教科书所要求的。到目前为止,我已经学会了如何比较字符串,获取字符串长度,分支,开关语句,字符串操作

import java.util.Scanner;
公共类实验室计划{
公共静态void main(字符串[]args){
扫描仪scnr=新扫描仪(System.in);
字符串名;
字符串名称;
字符串lastName;
字符串名;
name=scnr.nextLine();
int firstSpace=name.indexOf(“”);
firstName=name.substring(0,firstSpace);
int secondSpace=name.indexOf(“,firstSpace+1);
if(secondSpace<0){
lastName=name.substring(firstSpace);
System.out.println(lastName+,“+firstName);
}
否则{
middleName=name.substring(第一个空格,第二个空格);
lastName=name.substring(secondSpace);
System.out.println(lastName+“,“+firstName+”“+middleName.charAt(0)+”);
}
}
}

这就是我目前所拥有的

如果无法使用
split()
可以使用
scnr.next()
读取前两个条目,然后第三个输入将是该行的其余部分,然后可以从中提取一个子字符串以去掉空格

import java.util.Scanner; 

public class LabProgram {
   public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);

        String name1;
        String name2;
        String name3;

        name1 = scnr.next();
        name2 = scnr.next();
        name3 = scnr.nextLine();

        if (name3.equals("")){
            System.out.println(name2 + ", " + name1);
        }
        else{
            name3 = name3.substring(1);
            System.out.println(name3 + ", " + name1 + " " + name2.charAt(0) + ".");
        }
   }
}

如果不能使用
split()
,则可以使用
scnr.next()
读取前两个条目,然后第三个输入将是该行的其余部分,然后可以从中提取一个子字符串以去掉空格

import java.util.Scanner; 

public class LabProgram {
   public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);

        String name1;
        String name2;
        String name3;

        name1 = scnr.next();
        name2 = scnr.next();
        name3 = scnr.nextLine();

        if (name3.equals("")){
            System.out.println(name2 + ", " + name1);
        }
        else{
            name3 = name3.substring(1);
            System.out.println(name3 + ", " + name1 + " " + name2.charAt(0) + ".");
        }
   }
}

这是正确的代码:

import java.util.Scanner; 

public class LabProgram {
public static void main(String[] args) {
  Scanner scnr = new Scanner(System.in);

  String firstName;
  String middleName;
  String lastName;
  String name;

  name = scnr.nextLine();

  int firstSpace = name.indexOf(" ");
  firstName = name.substring(0, firstSpace);

  int secondSpace = name.indexOf(" ", firstSpace + 1);

  if (secondSpace < 0) { 
     lastName = name.substring(firstSpace + 1);
     System.out.println(lastName + ", " + firstName);
  }
  else {
     middleName = name.substring(firstSpace, secondSpace);
     lastName = name.substring(secondSpace + 1);
     System.out.println(lastName + ", " + firstName + " " +     middleName.charAt(1) + ".");
  }



  }
}
import java.util.Scanner;
公共类实验室计划{
公共静态void main(字符串[]args){
扫描仪scnr=新扫描仪(System.in);
字符串名;
字符串名称;
字符串lastName;
字符串名;
name=scnr.nextLine();
int firstSpace=name.indexOf(“”);
firstName=name.substring(0,firstSpace);
int secondSpace=name.indexOf(“,firstSpace+1);
if(secondSpace<0){
lastName=name.substring(firstSpace+1);
System.out.println(lastName+,“+firstName);
}
否则{
middleName=name.substring(第一个空格,第二个空格);
lastName=name.substring(secondSpace+1);
System.out.println(lastName+“,“+firstName+”+middleName.charAt(1)+”);
}
}
}

这是正确的代码:

import java.util.Scanner; 

public class LabProgram {
public static void main(String[] args) {
  Scanner scnr = new Scanner(System.in);

  String firstName;
  String middleName;
  String lastName;
  String name;

  name = scnr.nextLine();

  int firstSpace = name.indexOf(" ");
  firstName = name.substring(0, firstSpace);

  int secondSpace = name.indexOf(" ", firstSpace + 1);

  if (secondSpace < 0) { 
     lastName = name.substring(firstSpace + 1);
     System.out.println(lastName + ", " + firstName);
  }
  else {
     middleName = name.substring(firstSpace, secondSpace);
     lastName = name.substring(secondSpace + 1);
     System.out.println(lastName + ", " + firstName + " " +     middleName.charAt(1) + ".");
  }



  }
}
import java.util.Scanner;
公共类实验室计划{
公共静态void main(字符串[]args){
扫描仪scnr=新扫描仪(System.in);
字符串名;
字符串名称;
字符串lastName;
字符串名;
name=scnr.nextLine();
int firstSpace=name.indexOf(“”);
firstName=name.substring(0,firstSpace);
int secondSpace=name.indexOf(“,firstSpace+1);
if(secondSpace<0){
lastName=name.substring(firstSpace+1);
System.out.println(lastName+,“+firstName);
}
否则{
middleName=name.substring(第一个空格,第二个空格);
lastName=name.substring(secondSpace+1);
System.out.println(lastName+“,“+firstName+”+middleName.charAt(1)+”);
}
}
}


如果没有输入其中一个,会发生什么?它会给我一个错误,并说“您的程序需要输入”不,我的意思是如果您没有输入其中一个,您希望发生什么?哦,如果没有中间名,则需要打印lastName,firstname我相信它希望我做的是使用indexOf(),查找空格,然后再次输入姓氏。如果没有输入其中一个,该怎么办?它会给我一个错误,并说“您的程序需要输入”不,我的意思是,如果您没有输入其中一个,您希望发生什么?哦,如果没有中间名,则需要打印姓氏,firstname我相信它要我做的是使用indexOf()来查找空格,然后再次查找姓氏。我知道这是一种方法,但因为我还没有被教过拆分,所以它不起作用。但这与我目前的情况非常相似,只是没有正确地提取中间名,我会用我的名字更新顶部,以便你能看到。哦,很高兴你自己找到了答案,我用了一个不使用
split()
btw的代码编辑了我的名字。@JessicaGarnica,我建议你从问题中提取正确的代码并附上答案,在itI上用解决方案提问是没有意义的。我知道这是解决问题的方法,但因为我还没有被教过拆分,所以它不起作用。但这与我目前的情况非常相似,只是没有正确地提取中间名,我会用我的名字更新顶部,以便你能看到。哦,很高兴你自己找到了答案,我用了一个不使用
split()
btw的代码编辑了我的名字。@JessicaGarnica,我建议你从问题中提取正确的代码并附上答案,这样问一个带有答案的问题是没有意义的。请不要提供代码转储作业答案;相反,建议一种方法,比如“查找字符串中的空格数”;相反,建议一种方法,例如“查找字符串中的空格数”。