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++)更简洁
- 因为main方法是
内容的提问来源于stack exchange,提问作者Coralzee
相关产品推荐
相关产品推荐

