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

C# .NET 5.0控制台应用如何移除数组多余默认零值且保留输入0

问题根源
  • 你使用了和输入数组等长的定长int数组存储奇偶分类结果,int为值类型,未手动赋值的元素默认值为0,你现在通过跳过0的方式过滤未赋值位置,自然会把用户输入的有效0也过滤掉
  • 当前的奇偶判断逻辑将模2等于0的数归为偶数,0模2结果为0,如果你需要将0判定为奇数,首先要调整分类规则
最优修复方案(推荐)

直接使用可变长度的List<int>存储分类结果,不会产生空占位元素,完全不需要额外过滤逻辑:

using System;
using System.Collections.Generic;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] numbers = Array.ConvertAll(Console.ReadLine().Split(" "), Convert.ToInt32);
            List<int> numbers_odd = new List<int>();
            List<int> numbers_even = new List<int>();

            for (int repeat = 0; repeat < numbers.Length; repeat++)
            {
                int current = numbers[repeat];
                int uitkomst = current % 2;
                // 自定义规则:0判定为奇数,其余数字按模2结果判断
                if(current == 0 || uitkomst == 1) 
                {
                    numbers_odd.Add(current);
                }
                else
                {
                    numbers_even.Add(current);
                }
            }

            Console.Write("even: ");
            foreach (int item in numbers_even)
            {
                Console.Write(item + " ");
            }
            Console.WriteLine(" ");

            Console.Write("odd: ");
            foreach (int item in numbers_odd)
            {
                Console.Write(item + " ");
            }
        }
    }
}
若必须使用定长数组的修复方案

将数组改为可空值类型int?[],未赋值的元素默认值为null,过滤时跳过null即可,不会影响有效0的输出:

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] numbers = Array.ConvertAll(Console.ReadLine().Split(" "), Convert.ToInt32);
            int uitkomst = 0;
            int?[] numbers_odd = new int?[numbers.Length];
            int?[] numbers_even = new int?[numbers.Length];

            for (int repeat = 0; repeat < numbers.Length; repeat++)
            {
                int current = numbers[repeat];
                uitkomst = current % 2;
                if(current == 0 || uitkomst == 1) // 自定义规则:0算奇数
                {
                    numbers_odd[repeat] = current;
                }
                else
                {
                    numbers_even[repeat] = current;
                }
            }

            Console.Write("even: ");
            foreach (int? item in numbers_even)
            {
                if(item.HasValue)
                {
                    Console.Write(item + " ");
                }
            }
            Console.WriteLine(" ");

            Console.Write("odd: ");
            foreach (int? item in numbers_odd)
            {
                if (item.HasValue)
                {
                    Console.Write(item + " ");
                }
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:15:03