2014-11-07 2 views
0

Я довольно новый на Java и наткнулся на этот вызов:Возвращение фамилия метод 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; 

Теперь мне нужно, чтобы создать еще один метод, который принимает параметр имя сохраненного в имени массива [I] и возвращает последнее имя полного имени его (извините, если Я звук запутанным)

Что-то вроде:

public static (?) lastName (String[] name) { 


} 

Спасибо за помощь!

+4

Почему вы делаете массив из 100 строк, и только с помощью одного (недопустимого) слота этого? –

+0

better user 'List' – Rustam

+0

Я рекомендую сначала обновить' readNames', так что это будет актуальная работа. Тогда вы можете решить другие проблемы. – Tom

ответ

0
public static String lastName (String completeName) { 
    String[] names = completeName.split("\\s+"); 
    return names[names.length -1]; 
} 

И вы могли бы назвать это как этого

lastName(name[16]); 

Что вы делаете пропускание последнего слова в строке. Эта строка содержится в массиве «name».

Допустим, у вас есть { "Карл Луис", "Питер Гриффин", "Марк Руффало"}

Вы называете метод

lastName(name[1]); 

и он вернется "Гриффин"

Вам нужно быть осторожным с индексом, который вы используете. Если вы вызываете lasName (имя [99]), и у вас есть только 3 имени, вы получите исключение.

Также ваш метод readNames не подходит. Вы всегда используете 100 в качестве индекса. Сначала проверьте это.

+0

Спасибо! Но если я хочу выбрать, скажем, имя [16], которое будет передано lastName, действительно ли оно вернет выбранную фамилию? – ccomann

+0

Я не понимаю, что вы имеете в виду. Скажите мне пример. Скажем, имя String [] имеет {«Carl», «Louis», «Peter», «Griffin»} Что вы хотите, чтобы ваш метод выполнял точно? @ccomann – antorqs

+0

Я хочу, чтобы имя String [] имело {«Carl Johnson Travis», «Louis Grey», «Peter Pitt», «Griffin Von Fred»}, и я хочу, чтобы мой метод возвращал фамилии. Как «Тревис», «Серый», «Питт» или «Фред». В этом случае имя Карла будет называться [0]. Если lastName получает имя [0], я хочу, чтобы он возвращал «Travis» – ccomann

0

вы можете попробовать лучший способ с помощью 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; 
     } 

выхода:

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] 
+0

Спасибо! Но мне нужно сохранить каждое полное имя, введенное пользователем в массиве со 100 слотами!Значение использования может содержать только до 100 имен! И тогда мне нужно получить доступ к именам, введенным пользователем другими способами! (Прошу прощения, если ваш код делает это, я все еще изучаю программирование!) – ccomann

+0

Что вы подразумеваете под 100 слотами? – Rustam

Смежные вопросы