【问题标题】:How to get the first name in java如何在java中获取名字
【发布时间】:2017-09-21 10:18:46
【问题描述】:

如何获得名字好友

但是在这里我想取名字,即使它的输入有一个带空格的姓氏

示例: 第一个朋友

我输入名字:Alvin Indra

第二个朋友

我输入名字:Redi Rusmana

然后输出:

阿尔文

雷迪

请帮帮我 语法:

package latihan;

import java.util.Scanner;

public class LatihanArray {
    public static void main(String[] args) {
        int many;
        String[] friend = new String[100];
        Scanner sc = new Scanner(System.in);
        Scanner scx = new Scanner(System.in);

        System.out.print("Enter How Many Friends : ");
        many = sc.nextInt();
        for(int i=0;i<n;i++){
            System.out.print("Friend Of-"+(i+1)+" : ");
            friend[i] = scx.nextLine();
        }
        System.out.print("\n");
        System.out.println("Initials : ");
        for(int i=0;i<many;i++){
            System.out.println((i+1)+". "+friend[i].charAt(0));
        }
        System.out.print("\n");
        System.out.println("4 Letterhead : ");
        for(int i=0;i<n;i++){
            System.out.println((i+1)+". "+friend[i].substring(0,4));
        }
        System.out.println("First Name : ");
        for(??????){
            if(??????){
               for(????????){
                  ???????????????;
               }
            }
        }
    }
}

【问题讨论】:

  • 使用String.indexOf() (javadoc) 定位第一个空格,使用String.substring() (javadoc) 拉出第一个名字。
  • System.out.println("名字:"); for(??????){ if(??????){ for(????????){ ???????????????; } } } 在哪里?

标签: java arrays loops for-loop if-statement


【解决方案1】:

您输入朋友的名字作为字符串"&lt;firstName&gt; &lt;lastName&gt;"(部分之间有空格符号)。如果您想将其存储为一个字符串,您可以使用以下方法:

  1. 正则表达式:(?&lt;firstName&gt;\w+)\s+(?&lt;lastName&gt;\w+) 直接获取两部分
  2. 用空格分割字符串:String[] parts = friend.split("\s+") 并得到 parts[0] 作为名字,parts[1] 作为姓氏
  3. 但是我强烈建议你使用特殊的类来存储输入数据,因为一般情况下,如果你需要后期处理,最好为它准备好所有数据。我给你一个简单的例子来显示id。您可以查看它,并可能在进行一些更正后使用它(因为我不知道您的要求):

好友数据持有者

final class Friend {
    private final int id;
    private final String firstName;
    private final String lastName;

    public Friend(int id, String firstName, String lastName) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getInitials() {
        return String.valueOf(firstName.charAt(0)) + lastName.charAt(0);
    }

    public String getLetterHead() {
        return firstName.substring(0, 4);
    }
}

读取和打印数据的方法(来自您的问题)

List<Friend> friends = new ArrayList<>();
Scanner scan = new Scanner(System.in);

System.out.print("Enter How Many Friends : ");
int many = scan.nextInt();

for (int i = 0; i < many; i++) {
    System.out.print("Friend Of-" + (i + 1) + " : ");
    String firstName = scan.next();
    String lastName = scan.next();
    friends.add(new Friend(i + 1, firstName, lastName));
}

scan.close();

System.out.println("\nInitials: ");
for (Friend friend : friends)
    System.out.println(String.format("%d. %s", friend.id, friend.getInitials()));

System.out.println("\n4 Letterhead: ");
for (Friend friend : friends)
    System.out.println(String.format("%d. %s", friend.id, friend.getLetterHead()));

System.out.println("\nFirst Name: ");
for (Friend friend : friends)
    System.out.println(String.format("%d. %s", friend.id, friend.firstName));

System.out.println("\nLast Name: ");
for (Friend friend : friends)
    System.out.println(String.format("%d. %s", friend.id, friend.lastName));
    }
}

结果您在控制台中看到以下内容:

Enter How Many Friends : 2
Friend Of-1 : Alvin Indra
Friend Of-2 : Redi Rusmana

Initials: 
1. AI
2. RR

4 Letterhead: 
1. Alvi
2. Redi

First Name: 
1. Alvin
2. Redi

Last Name: 
1. Indra
2. Rusmana

【讨论】:

    猜你喜欢
    • 2016-02-12
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-01
    • 2017-06-18
    • 2013-11-28
    相关资源
    最近更新 更多