问题描述
我正在编写一个程序,其中用户在一行中输入他们的姓氏和姓氏,并且空格之间用空格隔开。然后,程序将检测空间,并将姓氏和姓氏提取到不同的变量中以进行打印。
示例:假设用户在一行上输入了“ simon大厅”,它们之间有空间,我希望这样输出: 姓氏:Simon 姓:霍尔
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(system.in);
System.out.println("Input forename and surname on one line (space included)");
String fullName = scanner.next();
String result = fullName;
result = result.split(" ") [0];
System.out.println(result);
}
}
**输入:zayaan khan(一行)
输出:
zayaan **(我要打印 姓氏:Zayaan 姓:Khan)
谢谢;)
解决方法
逐行获取输入
String fullName = scanner.nextLine(); // line by line input getter
根据空间拆分字符串并将其存储在字符串数组中,然后可以使用该数组的索引来访问它
String result[] = fullName.split(" "); // spliting the string
System.out.println("Forename: "+result[0]+" Surname: "+result[1]);// print it
,
使用正则表达式:
public class Main {
public static void main(String[] args) {
final Pattern pattern = Pattern.compile("(\\S+)\\s+(\\S+)");
final Scanner scanner = new Scanner(System.in);
final Matcher matcher = pattern.matcher(scanner.nextLine());
if (matcher.find())
System.out.println(String.format("Forename: %s,Surname: %s",matcher.group(1),matcher.group(2)));
}
}