确定获胜者的功能

时间:2019-05-14 21:08:13

标签: java

我正在尝试从用户输入arrayList确定赢家。 有人可以解释我的代码有什么问题吗? 显示一个更简单的方法来做到这一点?

public class Score {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    //Attributes
    private long  gameid;
    String sportstype;
    String winner;
    String player1name;
    String player2name;
    String[] player1score;
    String[] player2score;
    String finalscore;

        //Function to determine winner
    String getWinningScore() {
              //Lambda Expressions to convert String array to Int array
        int[] scoreArray1 = Arrays.stream(player1score).mapToInt(Integer::parseInt).toArray();
        int[] scoreArray2 = Arrays.stream(player2score).mapToInt(Integer::parseInt).toArray();
        int sumOfscore1 = 0;
        int sumOfscore2 = 0;
        for( int num : scoreArray1) {
            sumOfscore1 = sumOfscore1+num;
        }
        for( int num : scoreArray2) {
            sumOfscore2 = sumOfscore2+num;
        }
                if(sumOfscore1 > sumOfscore2) {
                    return player1name;
                } else if(sumOfscore2 > sumOfscore1) {
                    return player2name;
                } 
                    return winner;
                }

if语句中的错误消息:

  

未为参数类型java.lang.String [],java.lang.String []

定义运算符>

PS。我首先需要字符串数组,以便稍后在代码上供用户输入。

2 个答案:

答案 0 :(得分:2)

您的实际代码无法给出此错误,因为您正在比较整数,重新编译代码并再次运行


获取无循环求和的提示-将Stream与Java8结合使用:

int sumOfscore1 = Arrays.stream(player1score).mapToInt(Integer::parseInt).sum()

答案 1 :(得分:-1)

继续使用流。您可以使用Java Streams的reduce方法来获取两个成绩数组的总成绩。