Java I';我在字符串数组中搜索大写字母最多的单词
我的数组包含3个元素,它们描述3个不同的“singer”,每个singer都有一个抽象的字符串方法,返回“Lyms”。歌词包含大写字母和小写字母,大写字母最多的歌手唱得最响亮。下面的方法需要比较这三位歌手和他们的歌词,唱得最响的(大写字母数最多)需要返回,如果有人知道如何解决这个问题,请帮助我。谢谢Java I';我在字符串数组中搜索大写字母最多的单词,java,arrays,string,uppercase,lowercase,Java,Arrays,String,Uppercase,Lowercase,我的数组包含3个元素,它们描述3个不同的“singer”,每个singer都有一个抽象的字符串方法,返回“Lyms”。歌词包含大写字母和小写字母,大写字母最多的歌手唱得最响亮。下面的方法需要比较这三位歌手和他们的歌词,唱得最响的(大写字母数最多)需要返回,如果有人知道如何解决这个问题,请帮助我。谢谢 public static String najglosniej(Spiewak[] sp) { return " "; } 我将向您解释两种方法,但不会为您编写代码。最基本的是
public static String najglosniej(Spiewak[] sp) {
return " ";
}
我将向您解释两种方法,但不会为您编写代码。最基本的是使用命令式编程和循环。还可以将自定义函数与
max
一起使用
使用循环
强制获取具有最大计数的元素的主要思想是有一个循环,在该循环中,我们计算每个元素感兴趣的计数。对于当前最高的元素和当前最高的计数,我们还有一个存储变量。类似于max\u count
和max\u element
。这两种方法是耦合的(这就是为什么命令式方法不是最好的使用方法,而是我认为大多数初学者使用的方法;您很容易忘记更新这两种方法中的任何一种,并出现错误)
max\u count
保存我们在当前迭代中看到的最大计数,max\u元素
是给我们提供当前最大值的对象。如果在一次迭代中,我们看到计数高于max\u count
,我们将更新max\u count
和max\u element
,以便在所有即将到来的迭代中,我们知道当前最高的计数和元素
在循环结束时,max\u元素
将成为结果
使用最大值
读取代码的更简洁的方法是使用带有自定义比较的Collections.max
函数。通常情况下,一个人首先会学习使用内置比较来比较元素。就像对数字列表排序一样,使用的是数值。对字符串排序时,将使用字母表。但您也可以使用Java中的自定义比较器(例如,用于排序
或最大值
)。然后,这个自定义比较器检索两个要比较的元素。与依赖内置函数(在Java中,它将对象转换为字符串表示形式(toString()
)并按字母顺序进行比较)不同,您只需使用一种方法将对象传递给它,该方法计算两个歌手的响度并比较数字,根据员工的工资进行比较。这与您的问题非常相似,只是您还需要计算大写字母的数量。试试这个(如果我真的理解您的话):
我们不会为你做家庭作业。你自己甚至都没有尝试解决这个问题。非常感谢,我不是有意让任何人为我编写代码,我只是需要一些提示,我尝试了一些方法但没有成功,这就是为什么我发布了一个空方法,我知道规则,我不希望任何人为我编写整个代码,再次感谢你的回复,我一定会使用它们。如果你能理解,请使用
max
方法。代码更简洁,但我知道理解回调和其他东西需要一点时间。谢谢你的回复!我的做法有所不同,但这可能在将来的某个地方有所帮助:)
String[] test = new String[3];
test[0] = "hello";
test[1] = "WoRLD";
test[2] = "WINNER";
String result = getMaxCapitalLetters(test);
}
public String getMaxCapitalLetters(String[] strings){
Pattern p = Pattern.compile("([A-Z])");
String winner = null;
int maxCount = Integer.MIN_VALUE;
for(String input : strings){
Matcher m = p.matcher(input);
int count = 0;
while(m.find()) {
count++;
}
if (count > maxCount) {
maxCount = count;
winner = input;
}
}
return winner;
}