子串方法问题

时间:2016-02-26 20:27:20

标签: java string substring

我编写了一个小程序,提示用户输入他们的第一个中间名和姓,然后我尝试找到每个空格并将空格后面的名称存储到一个新的String变量中。

问题:我想在名称的每个部分之前找到空格,以便我可以获取每个相对名称并将其存储在新的字符串变量中,但我不知道我哪里出错了

import java.util.Scanner;
public class Example 
{  
   public static void main(String[] args)
   {      

       Scanner input = new Scanner(System.in);
       String name = "",
              firstName = "", 
              middleName = "", 
              lastName = ""; 



       boolean isName = false;

       while(!isName)
       {
          System.out.print("\nEnter your name as 'First Middle Last': ");
          name = input.nextLine();

           if(name.length() <  0)
           {
             System.out.print("\nEnter your name as 'First Middle Last': ");
             name = input.nextLine();
             System.out.print("Invalid input");
           } 

           else isName = true;            
        } 


         for(int j = 0; j < name.length(); j++)
         {
            if(name.charAt(j) == ' ')
            {

               firstName = name.substring(0, j); // Start at 0 end at first white space
               middleName = name.substring(j + 1, name.length());
               lastName = name.substring(j + 1, name.length()); 

            }
         }

         System.out.println("\nLast Name, First Name, Middle Name: " + lastName + firstName  + middleName );


  } 

}

我得到的输出看起来像这样

Enter your name as 'First Middle Last': Adam Thomas Smith

Last Name, First Name, Middle Name: SmithAdam ThomasSmith

有关如何解决此问题的任何建议吗?

3 个答案:

答案 0 :(得分:1)

name = name.trim(); // To avoid suprises, as Pshemo suggested.
String[] splitName = name.split("\\s+");

System.out.println("\nLast Name, First Name, Middle Name: " 
    + splitName[2] + " " + splitName[0] + " " + splitName[1]);

试试这个。它使用String.split()在空格(\\s+,正则表达式)上拆分名称,并将值作为数组返回。如果您选择,也可以将名称分配给变量。

答案 1 :(得分:0)

您可以尝试以下代码,只需将每个空格上的'name'变量拆分为String []然后从数组中获取每个值并分配给您想要的值。

String[] str = name.split(" ");
firstName = str[0];
middleName = str[1];
lastName = str[2];

答案 2 :(得分:0)

最好使用split(“”)函数...它会将字符串更改为字符串数组。例如: -

         String names = "Madan mohan malviya";
         String arr[] = name.split(" ");
         for( name :names){

               System.out.println(name);   // print each string content
          }