在Java中使用列表属性调用方法

时间:2018-10-26 01:05:11

标签: java string list methods bluej

我目前正在寻找一种方法,可以使我对多个单词进行拼字游戏评分,并将返回得分最高的单词。我已经能够创建一种方法来获取单词的分数,下一部分是能够调用具有多个单词的方法,它将返回分数最高的单词。

public String highestScoringWord(List<String> words) {
    // TODO: find the word with the highest score
    int highestScore = 0;
    String HighScoreWord = "";
    for(int i=0; i<words.size(); i++){
        int currentScore = scoreForWord(words.get(i));
        if(currentScore>highestScore){
            HighScoreWord = words.get(i);
        };
    };

    return HighScoreWord;
}

我正在使用blueJ,如何使用它的接口或codePad调用带有单词列表的此方法。

谢谢

2 个答案:

答案 0 :(得分:0)

首先,您必须用单词来制作List<String>,因为方法String highestScoringWord(List<String> words)仅将List<String>作为输入参数。就您而言,现在您可以从多个String对象中制作List<String>

List<String> words= Arrays.AsList("Word1","Word2","Word3","Word4");

现在将此列表传递给已经定义的函数highestScoringWord

String highestScore=highestScoringWord(words);

您将得到想要的结果。

答案 1 :(得分:0)

如果您使用的是Java 8或更高版本,则可以使用流获取要创建的分数列表的“最大”:

List<String> words = Arrays.asList("Dog", "Cat", "Bird");
int highest = words.stream()
        .map(this::scoreForWord)
        .max(Integer::compareTo)
        .orElse(0);

此代码的作用:

  • words.stream()-使用单词列表初始化流。
  • .map(this::scoreForWord)-使用int函数的逻辑将每个字符串转换为int scoreForWord(String)。该方法称为this,因为我假设它是一个实例方法。如果方法是static,则必须使用类名来引用该函数:ScrabbleScorer::scoreForWord
  • .max(Integer::compareTo)-获取从上一个操作创建的Integer流的最大值。逻辑将是默认的整数比较器(即Integer::compareTo
  • .orElse(0)-由于当开头的给定列表为空时,.max()操作将返回Optional<Integer>-我们将处理空的返回情况。我们使用值0来假设这种情况。