You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java新手求助:如何优化代码并调用自定义points方法计算积分

解决Java方法调用与积分计算优化问题

嘿,作为Java新手刚接触方法调用很容易懵,我来帮你把这段代码理顺,把积分计算的逻辑抽离到自定义的points方法里,同时修复现有代码的bug~

先说说你现有代码的问题

  • 第一个循环里,你每次都会把x和y的值覆盖掉,循环结束后这两个变量只保留了最后一场比赛的比分,第二个循环再用这个值重复计算10次,结果肯定不对
  • 所有逻辑都堆在main方法里,既不清晰也没法复用

优化后的完整代码

public class TotalPoints {
    public static void main(String[] args) {
        String[] games = {"1:0","2:0","3:0","4:0","2:1","3:1","4:1","3:2","4:2","4:3"};
        // 调用自定义的points方法,把games数组传进去,拿到总积分
        int totalPoints = points(games);
        System.out.println(totalPoints);
    }

    // 专门用来计算积分的自定义方法
    public static int points(String[] games) {
        int sum = 0;
        // 遍历每一场比赛(增强for循环比普通for更简洁)
        for (String game : games) {
            // 把比分字符串按冒号拆分成两个部分
            String[] pieces = game.split(":");
            int ourScore = Integer.parseInt(pieces[0]);
            int opponentScore = Integer.parseInt(pieces[1]);
            
            // 根据比分加对应积分
            if (ourScore > opponentScore) {
                sum += 3; // 赢一场加3分
            } else if (ourScore == opponentScore) {
                sum += 1; // 平一场加1分
            }
            // 输的情况加0分,不用额外写代码啦
        }
        return sum; // 返回计算好的总积分
    }
}

关键步骤解释

  • 方法抽离:把积分计算的逻辑单独放到points方法里,这样main方法只负责准备数据和调用方法,代码结构更清晰,以后要计算其他比赛的积分,直接调用这个方法就行
  • 修复循环逻辑:现在把每场比赛的比分拆分、积分计算都放到循环内部,每一场比赛都单独计算并累加积分,不会再出现只保留最后一场比分的问题
  • 方法调用:在main方法里,我们直接用points(games)把准备好的比赛数组传进去,方法会返回计算好的总积分,我们把结果存到totalPoints里再打印就好
  • 新手友好细节:
    • 因为main方法是static的,所以自定义的points方法也需要加static,不然得先创建TotalPoints的对象才能调用
    • 我把变量名改成了ourScore和opponentScore,比x和y更易懂,写代码时尽量用有意义的变量名哦
    • 增强for循环for (String game : games)可以直接遍历数组里的每个元素,比for (int i=0; i<games.length; i++)更简洁

内容的提问来源于stack exchange,提问作者Coralzee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 09:52:31