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

如何在C#中确保玩家输入不与数组内的值重复?

问题分析与修正代码

你的代码核心问题在于:

  • 遍历整个数组(包括未赋值的初始0),导致重复输出错误提示
  • 逻辑判断顺序混乱,错误提示会被多次触发
  • do-while没有终止条件,无法正常退出输入循环

以下是不使用bool变量的修正方案:

using System;

class Program {
  public static void Main (string[] args) {
    Console.WriteLine("Bingo!");
    Console.WriteLine("To play bingo, you need 1 bingo card with 10 numbers between 1-20.");
    Console.WriteLine("Then, one number is randomly drawn, and if it matches any of the card's numbers, you get bingo.");

    Console.WriteLine("");

    int[] heltal = new int[10];
    Random slump = new Random();
    int slumpNummer = slump.Next(1, 21);

    for(int i = 0; i < heltal.Length; i++) {
      do {
        Console.WriteLine($"Enter number {i + 1}:");
        int spelarInput = int.Parse(Console.ReadLine());
        
        // 先判断范围是否合法
        if (spelarInput > 20 || spelarInput < 1) {
          Console.WriteLine("You entered a number outside the valid range. Please enter a number between 1 - 20.");
          continue;
        }
        
        // 只遍历已经输入的元素(前i个),避免和未赋值的0比较
        int k;
        for(k = 0; k < i; k++) {
          if (heltal[k] == spelarInput) {
            Console.WriteLine("You entered a number that has already been used. Please enter a different number.");
            break;
          }
        }
        
        // 遍历完前i个都没找到重复,说明输入有效
        if (k == i) {
          heltal[i] = spelarInput;
          break;
        }
        
      } while(true);
    }
      
    Console.WriteLine("Your numbers:");
    foreach(int num in heltal){
      Console.Write(num);
      Console.Write(" "); 
    }

    Console.WriteLine($"\nBingo number {slumpNummer}");
  }
}

关键修改点

  • 调整判断顺序:先检查输入范围是否合法,不合法直接提示并重新输入
  • 限定遍历范围:只遍历数组中已经输入的前i个元素,避免和未赋值的初始值0比较,减少无效判断
  • 利用循环变量终止输入:通过内层循环变量k的最终值判断是否找到重复,若k == i说明没有重复,赋值后跳出do-while循环
  • 移除多余嵌套:把重复判断从foreach中移出,避免多次输出错误提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:32:15