【问题标题】:I'm searching for a word in a String array with the largest number of capital letters我正在字符串数组中搜索大写字母数量最多的单词
【发布时间】:2015-06-25 09:24:04
【问题描述】:

我的数组包含 3 个元素,它们描述了 3 个不同的“歌手”,每个歌手都有一个返回“歌词”的抽象 String 方法。歌词包含大小写字母,大写字母数量最多的歌手唱得最响亮。下面的方法是比较这三位歌手和他们的歌词,唱得最大声(大写字母最多)的需要返回,如果有人知道如何解决这个问题,请帮帮我。谢谢!

public static String najglosniej(Spiewak[] sp) {

        return " ";
}

【问题讨论】:

  • 我们不会为你做作业。你甚至没有表现出任何试图自己解决这个问题的努力。

标签: java arrays string uppercase lowercase


【解决方案1】:

我将向您解释两种方法,但不会为您编写代码。最基本的是使用命令式编程和循环。也可以使用带有max 的自定义函数。

使用循环

命令式获取具有最大计数的元素的主要思想是有一个循环,我们在其中计算我们对每个元素感兴趣的计数。我们还有一个用于当前最高元素和当前最高计数的存储变量。类似于max_countmax_element。这两者是耦合的(也就是说,为什么命令式方法不是最好用的方法,而是我认为大多数初学者都使用的方法;你很容易忘记更新两者中的任何一个而出错)。

max_count 保存了我们在当前迭代中看到的最大计数,max_element 是给我们当前最大值的对象。如果在一次迭代中,我们看到计数高于 max_count,我们会更新 max_countmax_element,以便在所有即将到来的迭代中我们知道当前最高的计数和元素。

在循环结束时,max_element 将是结果。

使用最大值

阅读代码的更简洁的方法是使用 Collections.max 函数和自定义比较。通常,首先学习使用内置比较来比较元素。就像您对数字列表进行排序一样,正在使用数值。对字符串进行排序时,会使用字母表。但是您也可以在 Java 中使用自定义比较器(例如,sortmax)。然后,此自定义比较器检索两个要比较的元素。与其依赖内置函数(我认为在 Java 中它会将对象转换为字符串表示(toString())并按字母顺序进行比较),不如将其传递给仅使用一种方法计算两位歌手的响度的对象并比较数字。 See this example,员工按工资进行比较。它与您的问题非常相似,只是您还需要计算大写字母的数量。

【讨论】:

  • 非常感谢,我不是要别人帮我写代码,我只是需要一些提示,我尝试了一些方法但没有成功,所以我发布了一个空的方法,我知道规则,我不希望任何人为我制作整个代码,再次感谢您的回复,我一定会使用它们。
  • 如果你能理解,请使用max方法。它的代码更简洁,但我知道理解回调和其他东西需要一些时间。
【解决方案2】:

试试这个(如果我真的理解你的话):

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;
    }

【讨论】:

  • 感谢您的回复!我做了不同的事情,但这在未来的某个地方可能会有所帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多