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

Java使用Scanner、数组、循环及if-else时重复打印问题如何解决?

问题原因

你当前的判断逻辑写在了球员数据录入的for循环内部,每录入1个球员的进球数就会立刻执行一次判断并打印结果,这是重复打印的核心原因。你的需求是所有球员数据录入完成后,统一判断整体结果只输出一次提示,因此需要把判断逻辑和录入逻辑拆分。

解决代码

import java.util.*;
public class Main{
   public static void main(String[]args)
   {
      Scanner x = new Scanner (System.in);
      System.out.print("Enter the number of players: ");
      int numplay = x.nextInt();
      int players[]= new int[numplay];
      int y; 
      // 新增标记位:默认所有球员进球数都不超过10
      boolean allUnder10 = true;

      // 第一层循环:仅完成所有球员进球数的录入,存入数组
      for(int i=0; i < numplay; i++)
      {
          System.out.print("Goals score by player #"+ (i+1) +": ");
          y = x.nextInt();
          players[i]=y;
      }   

      // 第二层遍历数组:判断是否有球员进球数超过10
      for(int goal : players){
          if(goal > 10){
              allUnder10 = false;
              break; // 只要有一个超过就可以提前终止遍历,提升效率
          }
      }

      // 最后统一输出结果
      if (allUnder10) 
      {
         System.out.println("Okay, fine, it's Messi");
      } 
      else 
      {
         System.out.println("Not Messi");
      }    
   }      
}

修改说明

  • 新增了布尔标记位allUnder10,用来记录是否所有球员进球数都不超过10
  • 拆分了逻辑:第一层循环只负责录入所有球员的进球数据存入数组,符合你练习数组用法的需求
  • 录入完成后单独遍历数组做判断,只要存在任意一个进球数超过10的球员,就将标记位置为false
  • 最后根据标记位结果仅输出一次最终提示,完全匹配你期望的输出效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:36:07