返回姓氏Java方法

返回姓氏Java方法,java,return,Java,Return,我是java新手,遇到了以下挑战: 我有一个方法,可以读取全名(不限制一个人可以拥有的姓名数量)并将其保存在数组中。这就是我到目前为止所拥有的: public static int readNames (String[] args) { int i=0, cont=0; String name[] = new String[99]; Scanner in = new Scanner(System.in); for (i = 0; i < name.l

我是java新手,遇到了以下挑战:

我有一个方法,可以读取全名(不限制一个人可以拥有的姓名数量)并将其保存在数组中。这就是我到目前为止所拥有的:

public static int readNames (String[] args) {

    int i=0, cont=0;

    String name[] = new String[99];

    Scanner in = new Scanner(System.in);

    for (i = 0; i < name.length; i++) {

        name[99] = in.nextLine();

        while(name[99].equalsIgnoreCase("END")) {

            name[99] = in.nextLine();

            cont++;

        }


    }

    return cont;
谢谢你的帮助

public static String lastName (String completeName) {
     String[] names = completeName.split("\\s+");
     return names[names.length -1];
}
你会这样称呼它吗

lastName(name[16]);
您正在做的是传递字符串中的最后一个单词。此字符串包含在数组“name”中

假设你有{“卡尔·路易斯”、“彼得·格里芬”、“马克·鲁法洛”}

你调用这个方法

lastName(name[1]);
它将返回“格里芬”

您需要小心使用索引。如果您调用lasName(name[99]),并且您只有3个名称,那么您将得到一个异常


另外,readNames方法也不正常。您总是使用100作为索引。首先检查它。

您可以通过使用
ArrayList来尝试更好的方法

 public static void main(String[] args){
            Scanner in = new Scanner(System.in);
            ArrayList<String> fullName=new ArrayList<String>();
            ArrayList<String> lastName=new ArrayList<String>();

                String name=in.nextLine();
                while(!name.equalsIgnoreCase("END")){
                    fullName.add(name);
                    name=in.nextLine();    // creating a list of full name

                }

            System.out.println("Last Name : "+getLastName(fullName));

      }
        public static ArrayList<String> getLastName (ArrayList<String> list) {

            ArrayList<String>lastName=new ArrayList<String>();

            for (String name : list) {
                String []n=name.split(" ");      
                lastName.add(n[n.length-1]);     // creating a list of last name
            }
            return lastName;
       }

为什么要创建一个包含100个字符串的数组,并且只使用其中的一个(无效)插槽?我建议首先改进
readNames
,这样它才能真正工作。然后你可以解决其他问题。谢谢大家的帮助!如果我在for循环中包含“return cont;”,该方法将返回cont?@ccomann No,它将在这一行
name[100]=in.nextLine()上抛出一个
IndexOutOfBoundsException
首先。然后如何使方法返回“cont”?谢谢!但如果我想选择,比如说,名字[16]传递给lastName,它会返回选择的姓氏吗?我不明白你的意思。给我举个例子。假设String[]name有{“Carl”、“Louis”、“Peter”、“Griffin”}您希望您的方法具体做什么@ccomannI希望字符串[]名称具有{“Carl Johnson Travis”、“Louis Gray”、“Peter Pitt”、“Griffin Von Fred”},例如,我希望我的方法返回姓氏。比如“特拉维斯”、“格雷”、“皮特”或“弗雷德”。在这种情况下,Carl的名字将是name[0]。如果lastName收到名称[0],我希望它返回“Travis”,因为我编辑了我的答案,所以您可以得到您想要的。谢谢你的帮助!我要试试看!谢谢但是我需要将用户输入的每个全名保存在一个包含100个插槽的数组中!这意味着用户最多只能输入100个名称!然后我需要访问用户在其他方法中输入的名称!(很抱歉,如果你的代码这样做了,我还在学习编程!)你说的100个插槽是什么意思?
 public static void main(String[] args){
            Scanner in = new Scanner(System.in);
            ArrayList<String> fullName=new ArrayList<String>();
            ArrayList<String> lastName=new ArrayList<String>();

                String name=in.nextLine();
                while(!name.equalsIgnoreCase("END")){
                    fullName.add(name);
                    name=in.nextLine();    // creating a list of full name

                }

            System.out.println("Last Name : "+getLastName(fullName));

      }
        public static ArrayList<String> getLastName (ArrayList<String> list) {

            ArrayList<String>lastName=new ArrayList<String>();

            for (String name : list) {
                String []n=name.split(" ");      
                lastName.add(n[n.length-1]);     // creating a list of last name
            }
            return lastName;
       }
Carl Johnson Travis
Louis Gray
Peter Pitt
Griffin Von Fred
end
Full Name :[Carl Johnson Travis, Louis Gray, Peter Pitt, Griffin Von Fred]
Last Name : [Travis, Gray, Pitt, Fred]