NBA篮球赛的计分统计算法

一、使用步骤

1.引入库

代码如下 :

import java.util.ArrayList;
import java.util.Scanner;

public class Solution {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        String nextLine = scanner.nextLine();

        Integer scoreRet = getScoreRet(nextLine);

        System.out.println(scoreRet);

    }

    public static Integer getScoreRet(String srcScoreArrStr){
        if (srcScoreArrStr==null){
            return -1;
        }
        if (srcScoreArrStr.isEmpty()){
            return -1;
        }

        String trimSrcScoreTempArrStr = srcScoreArrStr.trim();
        String[] splitSrcScoreTempArrStr = trimSrcScoreTempArrStr.split("\\s");
        int length = splitSrcScoreTempArrStr.length;
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < length; i++) {
            String scoreStrTemp = splitSrcScoreTempArrStr[i];
            stringBuilder.append(scoreStrTemp);
        }
        String srcScoreArr = stringBuilder.toString();

        int srcScoreArrLen=srcScoreArr.length();
        for (int i = 0; i < srcScoreArrLen; i++) {
            char charAt = srcScoreArr.charAt(i);
            if (Character.isDigit(charAt)){
                continue;
            }else if (charAt=='+'){
                continue;
            }else if (charAt=='C'){
                continue;
            }else if (charAt=='D'){
                continue;
            }else{
                return -1;
            }
        }

        if (srcScoreArrLen>1000 || srcScoreArrLen<1){
            return -1;
        }

        int multiPlyFac=10;
        for (int i = 0; i < 4; i++) {
            multiPlyFac*=10;
        }
        int lowDeadLineNum=-3;
        lowDeadLineNum*=multiPlyFac;
        int highRestricNum=3;
        highRestricNum*=multiPlyFac;

        for (int i = 0; i < srcScoreArrLen; i++) {
            char charAt = srcScoreArr.charAt(i);
            Integer integerScore = Integer.valueOf(charAt);
            if (Character.isDigit(integerScore)){
                if (integerScore<lowDeadLineNum){
                    return -1;
                }
                if (integerScore>highRestricNum){
                    return -1;
                }
            }
        }

        if (srcScoreArr.length()==1){
            char srcScoreArr1 = srcScoreArr.charAt(0);
            if (Character.isDigit(srcScoreArr1)){
                return Integer.valueOf(srcScoreArr1);
            }
            if (srcScoreArr1=='+'){
                return -1;
            }
        }


        ArrayList<Integer> integerArrayList = new ArrayList<Integer>();
       for (int i = 0; i < srcScoreArrLen; i++) {
            char charAt = srcScoreArr.charAt(i);
            Integer integerScore=0;
            if (Character.isDigit(charAt)) {
                integerScore = Integer.valueOf(charAt);
                integerArrayList.add(integerScore);
                continue;
            }else {
                char charAt1 = srcScoreArr.charAt(0);
                if (charAt1=='+'){
                    integerScore=-1;
                    integerArrayList.add(integerScore);

                    continue;
                }else {
                    if (charAt=='C'){
                        int indexPre=i-1;
                        char charAtPre = srcScoreArr.charAt(indexPre);
                        Integer integerScoreFactor = Integer.valueOf(charAtPre);
                        if (Character.isDigit(integerScoreFactor)){

                            integerArrayList.remove(indexPre);

                            continue;
                        }
                    }

                    if (charAt=='D'){
                        int indexPre=i-1;
                        char charAtPre = srcScoreArr.charAt(indexPre);
                        if (Character.isDigit(charAtPre)){
                            if (Character.isDigit(charAtPre)){
                                Integer integerScoreTemp = Integer.valueOf(charAtPre);
                                int scoreFactor=integerScoreTemp*2;

                                integerScore=scoreFactor;

                                integerArrayList.add(integerScore);

                                continue;
                            }
                        }
                    }

                    if (charAt=='+'){
                        int indexPre=i-1;
                        char charAtPre= srcScoreArr.charAt(indexPre);
                        if (Character.isDigit(charAtPre)){

                            char charAtCurr = srcScoreArr.charAt(i);
                            Integer integerScoreCurr = Integer.valueOf(charAtCurr);

                            Integer integerScoreTemp = Integer.valueOf(charAtPre);
                            int scoreFactor=integerScoreCurr+integerScoreTemp;

                            integerArrayList.add(scoreFactor);

                            continue;
                        }
                    }

                }
            }
        }


        int scoreRet=0;
        for (Integer integer : integerArrayList) {
            scoreRet+=integer;
        }

        return scoreRet;
    }
}

2.读入数据

代码如下 :

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员是干活的

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值