java - 在数组的每个索引中计算“,”之前的字符,并返回最高的
问题描述
我需要从这个数组中获取最长的姓氏并将其返回。
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);
}
但它给出的输出是“最长的姓氏应该是;特纳,布伦丹”,这不是列表中最长的名字。
我在这里做错了什么,但此时我的大脑感觉就像炒鸡蛋。任何人都可以帮忙吗?
谢谢你。
解决方案
对于数组中的每个名称,解析姓氏。将其与当前最长的姓氏进行比较。如果电流为空或更短,则替换它。继续这样做,直到列表用尽。返回结果。
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;
}
推荐阅读
- node.js - 文档中间件、模型中间件、聚合中间件、查询中间件有什么区别?
- ruby - 谁能解释一下 :hard_wrap 是如何工作的?
- javascript - 当实时位置到达标记位置时,如何调用显示“您已到达目的地”警报的函数?ReactJS 和传单
- javascript - 如何使用 React Native 创建底部标签导航
- javascript - 给定数组的 Observable,优化 Rxjs 中重复的昂贵计算
- javascript - 包含对象到平面对象数组的对象数组
- r - Firth 逻辑回归中的错误消息
- java - AspectJ @Around 和 @After 抛出相同的方法不起作用
- python - 为什么 funcion self.spacy_nlp(phrase) 不起作用
- angular - 单击按钮展开 Angular Material 行