Java 具有拆分大小的If-else语句

Java 具有拆分大小的If-else语句,java,Java,我正试图编写一个基本程序,输出用户输入的姓名的首字母和变体。我已经记下了基本的编码,但是我一直在思考如何编写if-else语句,以便用户只输入名字和姓氏,而不输入中间名。以下是代码的开头: Scanner scan=new Scanner (System.in); System.out.println("What are your first, middle, and last names? "); String name = scan.nextLine(); String[] partOfNa

我正试图编写一个基本程序,输出用户输入的姓名的首字母和变体。我已经记下了基本的编码,但是我一直在思考如何编写if-else语句,以便用户只输入名字和姓氏,而不输入中间名。以下是代码的开头:

Scanner scan=new Scanner (System.in);
System.out.println("What are your first, middle, and last names? ");
String name = scan.nextLine();
String[] partOfName = name.split(" ");

**if ()**
{
  char firstInitial = Character.toUpperCase(partOfName[0].charAt(0));
  char middleInitial= Character.toUpperCase(partOfName[1].charAt(0));
  char lastInitial = Character.toUpperCase(partOfName[2].charAt(0));

  String firstName = partOfName[0].substring(0,1).toUpperCase() + partOfName[0].substring(1);

  String lastName = partOfName[2].substring(0,1).toUpperCase() + partOfName[2].substring(1);

  String middleName = partOfName[1].substring(0,1).toUpperCase() + partOfName[1].substring(1);
  String c_lastName = lastName.toUpperCase();

  System.out.println ("Your Initials Are " + firstInitial + middleInitial + lastInitial);
  System.out.println("Variation one: " + c_lastName + ", " + firstName + " " + middleInitial + ".");
  System.out.println("Variation two: " + lastName+ ", " + firstName + " " + middleName);
}
else
{
  char firstInitial = Character.toUpperCase(partOfName[0].charAt(0));
  char lastInitial = Character.toUpperCase(partOfName[2].charAt(0));
}

计算输入的字数

if (partOfName.length == 2){
// only First name and last name
}else if (partOfName.length == 3){
// with middle name
}

计算输入的字数

if (partOfName.length == 2){
// only First name and last name
}else if (partOfName.length == 3){
// with middle name
}

使用数组的大小
partOfName

if (partOfName.length>=3)
{
 //work with first name, middle name and last name
} else {
 //work with first name and last name
}

使用数组的大小
partOfName

if (partOfName.length>=3)
{
 //work with first name, middle name and last name
} else {
 //work with first name and last name
}

我可能会检查数组的
length
属性

if (partOfName.length > 2) // At least 3 names entered
{

}
else if (partOfName.length == 2) // Two names entered
{

}

您可能还想检查是否只输入了一个名称。也许用户是麦当娜。

我可能会检查数组的
长度属性

if (partOfName.length > 2) // At least 3 names entered
{

}
else if (partOfName.length == 2) // Two names entered
{

}
Scanner scan=new Scanner (System.in);
System.out.println("What are your first, middle, and last names? ");
String name = scan.nextLine();
String[] partOfName = name.split(" ");
int len = partOfName.length;


if( len > 2 )
{
   //If user inputs 4 or more words only first three will be evaluated.

  char firstInitial = Character.toUpperCase(partOfName[0].charAt(0));
  char middleInitial= Character.toUpperCase(partOfName[1].charAt(0));
  char lastInitial = Character.toUpperCase(partOfName[2].charAt(0));

  String firstName = partOfName[0].substring(0,1).toUpperCase() + partOfName[0].substring(1);

  String lastName = partOfName[2].substring(0,1).toUpperCase() + partOfName[2].substring(1);

  String middleName = partOfName[1].substring(0,1).toUpperCase() + partOfName[1].substring(1);
  String c_lastName = lastName.toUpperCase();

  System.out.println ("Your Initials Are " + firstInitial + middleInitial + lastInitial);
  System.out.println("Variation one: " + c_lastName + ", " + firstName + " " + middleInitial + ".");
  System.out.println("Variation two: " + lastName+ ", " + firstName + " " + middleName);
}
else if(len == 2)
{
  char firstInitial = Character.toUpperCase(partOfName[0].charAt(0));
  char lastInitial = Character.toUpperCase(partOfName[1].charAt(0));
}
else if ( len < 2)
{
   System.out.println("Bad input");
}
您可能还想检查是否只输入了一个名称。也许用户就是麦当娜

Scanner scan=new Scanner (System.in);
System.out.println("What are your first, middle, and last names? ");
String name = scan.nextLine();
String[] partOfName = name.split(" ");
int len = partOfName.length;


if( len > 2 )
{
   //If user inputs 4 or more words only first three will be evaluated.

  char firstInitial = Character.toUpperCase(partOfName[0].charAt(0));
  char middleInitial= Character.toUpperCase(partOfName[1].charAt(0));
  char lastInitial = Character.toUpperCase(partOfName[2].charAt(0));

  String firstName = partOfName[0].substring(0,1).toUpperCase() + partOfName[0].substring(1);

  String lastName = partOfName[2].substring(0,1).toUpperCase() + partOfName[2].substring(1);

  String middleName = partOfName[1].substring(0,1).toUpperCase() + partOfName[1].substring(1);
  String c_lastName = lastName.toUpperCase();

  System.out.println ("Your Initials Are " + firstInitial + middleInitial + lastInitial);
  System.out.println("Variation one: " + c_lastName + ", " + firstName + " " + middleInitial + ".");
  System.out.println("Variation two: " + lastName+ ", " + firstName + " " + middleName);
}
else if(len == 2)
{
  char firstInitial = Character.toUpperCase(partOfName[0].charAt(0));
  char lastInitial = Character.toUpperCase(partOfName[1].charAt(0));
}
else if ( len < 2)
{
   System.out.println("Bad input");
}
您可能需要增强else语句,以确保split实际上至少包含两个部分

您可能需要增强else语句,以确保split在设置之前至少有两个部分

    char firstInitial = Character.toUpperCase(partOfName[0].charAt(0));
    char middleInitial= Character.toUpperCase(partOfName[1].charAt(0));
    char lastInitial = Character.toUpperCase(partOfName[2].charAt(0));
确保拆分后的数组包含三个元素。否则你的程序就会失败。 然后您可以假设,如果数组有两个元素,用户输入了他的姓名和姓氏,那么您可以设置firstInitial和lastInitial。 如果数组的长度为3,则可以设置firstInitial、middleInitial和lastInitial

    int len=partOfName.length;

    // If you need to get more than 3, you should need a more generic solution.
    if (len<2 || len>3 )
    System.out.println("Bad input."); // or throw an Exception

    if (len==3){
    //set initials of name, middle and lastname
    }
    else if (len==2) {
    //set initials of name, and lastname
    }
int len=partOfName.length;
//如果您需要获得3个以上,那么您应该需要一个更通用的解决方案。
如果(len3)
System.out.println(“输入错误”);//或者抛出异常
如果(len==3){
//设置姓名、中间名和姓氏的首字母缩写
}
else if(len==2){
//设置姓名和姓氏的首字母缩写
}
首先,在设置之前

    char firstInitial = Character.toUpperCase(partOfName[0].charAt(0));
    char middleInitial= Character.toUpperCase(partOfName[1].charAt(0));
    char lastInitial = Character.toUpperCase(partOfName[2].charAt(0));
确保拆分后的数组包含三个元素。否则你的程序就会失败。 然后您可以假设,如果数组有两个元素,用户输入了他的姓名和姓氏,那么您可以设置firstInitial和lastInitial。 如果数组的长度为3,则可以设置firstInitial、middleInitial和lastInitial

    int len=partOfName.length;

    // If you need to get more than 3, you should need a more generic solution.
    if (len<2 || len>3 )
    System.out.println("Bad input."); // or throw an Exception

    if (len==3){
    //set initials of name, middle and lastname
    }
    else if (len==2) {
    //set initials of name, and lastname
    }
int len=partOfName.length;
//如果您需要获得3个以上,那么您应该需要一个更通用的解决方案。
如果(len3)
System.out.println(“输入错误”);//或者抛出异常
如果(len==3){
//设置姓名、中间名和姓氏的首字母缩写
}
else if(len==2){
//设置姓名和姓氏的首字母缩写
}


您可能不希望有,
partOfName.length>2
,因为用户可以输入4个名称。我不认为他会想解析它。@RoK没问题。逻辑只涉及前三个词。第四个被忽略了。不过你想让条件尽可能严格。代码看起来可能有误导性。我收到一个错误:找不到符号。应该改为name.length吗?@user2799775是的,有一个拼写错误,Mike Christensen纠正了,您可能不想有,
partOfName.length>2
,因为用户可以输入4个名称。我不认为他会想解析它。@RoK没问题。逻辑只涉及前三个词。第四个被忽略了。不过你想让条件尽可能严格。代码看起来可能有误导性。我收到一个错误:找不到符号。是否应该改为name.length?@user2799775是的,有一个拼写错误,Mike Christensen更正了。我收到一个错误:找不到符号。是否应改为name.length?您要确保数组
partOfName
的长度为3或更多,以确保输入(
name
)被拆分为3或更多部分。我收到一个错误:找不到符号。是否应改为name.length?您想确保数组
partOfName
的长度为3或更多,以确保输入(
name
)被拆分为3或更多部分。您能给我一个例子吗?我想我理解你的意思,但不是100%重复:你能给我举个例子吗?我想我理解你的意思,但不是100%重复:array.length是最终字段,不是methodarray.length是最终字段,不是方法