我编写了一个小程序,提示用户输入他们的第一个中间名和姓,然后我尝试找到每个空格并将空格后面的名称存储到一个新的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
有关如何解决此问题的任何建议吗?
答案 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
}