首页 > 解决方案 > 在数组的每个索引中计算“,”之前的字符,并返回最高的

问题描述

我需要从这个数组中获取最长的姓氏并将其返回。

String[] names = {"Turner, Brendan", "Savage, Fred", "Zidy, Boop",
                 "Zobie, Brendan", "Flurb, Fred", "Mopeeeeeyyy, Boopertinson"};

到目前为止,我有这个;

public static void getLongestSurname(String[] name){
         int i = 0;
         int x = 0;
         int currentLength = 0; 
         int lastLength = 0; 
         String longestName = null;
    for(int j = 0; j < (name.length); j++){
      
          while (name[j].charAt(i) != ',') {
          i++;
          currentLength++;
          }
      System.out.println(i);
      System.out.println("current is"+currentLength);
      i = 0;
      currentLength = 0;
        if ( currentLength > lastLength ){
           longestName = name[i]; 
          }
    }
    
     System.out.println("longest surname should be; "+ longestName);
  }

但它给出的输出是“最长的姓氏应该是;特纳,布伦丹”,这不是列表中最长的名字。

我在这里做错了什么,但此时我的大脑感觉就像炒鸡蛋。任何人都可以帮忙吗?

谢谢你。

标签: javaarrayssortingsubstringnames

解决方案


对于数组中的每个名称,解析姓氏。将其与当前最长的姓氏进行比较。如果电流为空或更短,则替换它。继续这样做,直到列表用尽。返回结果。

public String findLongestSurname(String[] names) {
  String longestSurname = null;
  for (String name : names) {
    String[] tokens = name.split(",");
    String surname = tokens[0];
    if (longestSurname == null || surname.length > longestSurname.length) {
      longestSurname = surname;
    }
  }
  return longestSurname;
}

推荐阅读