在java中打印单独的名称变体?

时间:2013-09-19 07:46:50

标签: java arrays input

我正在进行编程以打印以下内容

用户输入名称如此 - >中间的第一个    印刷品:
   FML
   变化一:最后,第一M. ..    变化二:最后,第一中间

现在,我需要一个if语句,这样如果只输入一个名字就会显示“错误,输入错误”

我编码非常非常规,但是嘿,这是我以前编程的第一件事,所以我想我们都从某个地方开始。

import java.util.Scanner;

public class name {
    public static void main(String[]args)
{
    Scanner input = new Scanner(System.in);
    String fullName = input.nextLine();
    String firstName;
    String middleName;
    String lastName;

    //Declares length of entire name
    int nameLength = fullName.length();

    //Declares int where first space is
    int a = fullName.indexOf(" ");

    //Declares int where second space is
    int b = fullName.lastIndexOf(" ");

    //If they equal each other, then there is only one space
    if ( a == b )
    {
        firstName = fullName.substring(0,a);

        lastName = fullName.substring(a+1,nameLength);

        String firstNameInitial = firstName.substring(0,1);
        String lastNameInitial = lastName.substring(0,1);
        String upperCaseInitials = (firstNameInitial.toUpperCase() + lastNameInitial.toUpperCase());

        firstName = fullName.substring(0,a);

        lastName = fullName.substring(b+1,nameLength);

        System.out.println("Your initials are: " + upperCaseInitials);
        System.out.println("Variation One: " + lastName.toUpperCase() + ", " + firstNameInitial.toUpperCase() + firstName.substring(1,a));
        System.out.println("Variation Two: " + lastNameInitial.toUpperCase() + lastName.substring(1,lastName.length()) + ", " + firstNameInitial.toUpperCase() + firstName.substring(1,a));

    }

    //If a < b then it will notice a middle name exists due to multiple spaces
    else if ( a < b )
    {
        firstName = fullName.substring(0,a);

        middleName = fullName.substring(a+1,b);

        lastName = fullName.substring(b+1,nameLength);

        String firstNameInitial = firstName.substring(0,1);
        String middleNameInitial = middleName.substring(0,1);
        String lastNameInitial = lastName.substring(0,1);
        String upperCaseInitials = (firstNameInitial.toUpperCase() + middleNameInitial.toUpperCase() + lastNameInitial.toUpperCase());

        //MNIC = Middle Name Initial Capitalized
        String MNIC = middleNameInitial.toUpperCase();

        //MNIMFC = Middle Name Initial Minus First Character
        String MNIMFC = middleName.substring(1, middleName.length());

        System.out.println("Your initials are: " + upperCaseInitials);
        System.out.println("Variation One: " + lastName.toUpperCase() + ", " + firstNameInitial.toUpperCase() + firstName.substring(1,a) + " " + middleNameInitial.toUpperCase() + "." );
        System.out.println("Variation Two: " + lastNameInitial.toUpperCase() + lastName.substring(1,lastName.length()) + ", " + firstNameInitial.toUpperCase() + firstName.substring(1,a) +  " " + MNIC  + MNIMFC);


    }







}

}

5 个答案:

答案 0 :(得分:1)

您可以使用String.split()功能将字符串拆分为沿着分隔符的部分。

在您的情况下,这将是空格(" "

尝试:

Scanner input = new Scanner(System.in);
String fullName = input.nextLine();
String firstName;
String middleName;
String lastName;

String[] parts = fullName.split(" ");

if(parts.length() == 3){
    // 3 words were entered, so there is a middle name
}
// ...

答案 1 :(得分:0)

您可以添加此项检查

if(fullName.indexOf(" ")==-1 || (fullName.indexOf(" ") == fullName.lastIndexOf(" "))){
    // The first check is to check if only firstname was given and the second check is to check if only first and middle names were given.
    // If first + middle is a valid scenario, you can remove the second half of the if condition
    System.out.println("error, incorrect input");
    System.exit(0);
}

在代码中的以下语句之前。

int nameLength = fullName.length();

答案 2 :(得分:0)

您只需检查a == -1即可。如果找不到indexOf,则返回-1(根据the docs)。

if (a == -1)
   System.out.println("Error, invalid input!");
else if (a == b)
...

答案 3 :(得分:0)

您可以按照以下步骤缩小到您所述的条件:

  1. 在语句fullName
  2. 之前修剪输入字符串int a = fullName.indexOf(" ");
  3. 接下来检查空白索引(即ab变量的值)是否为-1,那么你可以假设输入只包含一个单词,大概是名字
  4. 打印错误消息“错误,输入错误”

答案 4 :(得分:0)

因为这是你的第一次尝试,我会给你一个修改后的代码版本:

public class name {
    public static void main(String[]args)
    {
        Scanner input = new Scanner(System.in);
        String fullName = input.nextLine();
        String firstName;
        String middleName;
        String lastName;

        //Declares length of entire name
        int nameLength = fullName.length();

        //Declares int where first space is
        int a = fullName.indexOf(" ");

        //Declares int where second space is
        int b = fullName.lastIndexOf(" ");

        /*** Use the split function to split the names with spaces as delimiter **/
        String[] n = fullName.split(' ');

        firstName = n[0];

        if( n.length == 2 ) {
            lastName = n[1];
        }

        if( n.length > 3 ) {
            lastName = n[1];
            middleName = n[2];
        }

        String firstNameInitial = firstName.substring(0,1);
        String middleNameInitial = middleName.substring(0,1);
        String lastNameInitial = lastName.substring(0,1);
        String upperCaseInitials = (firstNameInitial.toUpperCase() + middleNameInitial.toUpperCase() + lastNameInitial.toUpperCase());

        //MNIC = Middle Name Initial Capitalized
        String MNIC = middleNameInitial.toUpperCase();

        //MNIMFC = Middle Name Initial Minus First Character
        String MNIMFC = middleName.substring(1, middleName.length());

        System.out.println("Your initials are: " + upperCaseInitials);
        System.out.println("Variation One: " + lastName.toUpperCase() + ", " + firstNameInitial.toUpperCase() + firstName.substring(1,a) + " " + middleNameInitial.toUpperCase() + "." );
        System.out.println("Variation Two: " + lastNameInitial.toUpperCase() + lastName.substring(1,lastName.length()) + ", " + firstNameInitial.toUpperCase() + firstName.substring(1,a) +  " " + MNIC  + MNIMFC);
    }
}