C# 我如何用一个问题创建一个无限循环,当回答这个问题时,将答案分类为3个不同数组中的1个?

C# 我如何用一个问题创建一个无限循环,当回答这个问题时,将答案分类为3个不同数组中的1个?,c#,C#,我有三个不同的类别。 1.托德勒(1-4岁) 2.儿童(5-17岁) 3.成年人(18岁及以上) 我想无限循环“给出一个数字”,这样即使3个数组都被填满了,它仍然会继续。我希望循环仅在键入0时结束。(这似乎是我能做到的) 只需存储前十个值,填充数组后的任何值都可以忽略。(每3个阵列10个值为30个值) 然后我想按照上面的解释对年龄进行分类。对于3个数组中的每个元素,我的当前年龄输出(“输入”)保持为0。我意识到我的if语句不是因为“…长度”而触发的,但您建议如何替换它? 我尝试了“I

我有三个不同的类别。 1.托德勒(1-4岁) 2.儿童(5-17岁) 3.成年人(18岁及以上)

我想无限循环“给出一个数字”,这样即使3个数组都被填满了,它仍然会继续。我希望循环仅在键入0时结束。(这似乎是我能做到的) 只需存储前十个值,填充数组后的任何值都可以忽略。(每3个阵列10个值为30个值)

然后我想按照上面的解释对年龄进行分类。对于3个数组中的每个元素,我的当前年龄输出(“输入”)保持为0。我意识到我的if语句不是因为“…长度”而触发的,但您建议如何替换它? 我尝试了“I<10”,但这会导致数组越界异常,并使Todler[I]/children[I]/grownups[I]<10

对不起,如果我不够简洁,但我还是一个初学者,英语不是我的母语。 提前谢谢

class Program
{
    static void Main(string[] args)
    {
        int[] todlers = new int[10];
        int[] children = new int[10];
        int[] grownups = new int[10];

        for (int i = 0; ; i++)
        {
            Console.Write("Give a number (0 = stop) : ");
            int input = int.Parse(Console.ReadLine());

            if (todlers.Length < 10 && input < 5 && input > 0)
            {
                todlers[i] = input;
            }
            else if (children.Length < 10 && input > 4 && input < 18)
            {
                children[i] = input;
            }
            else if (grownups.Length < 10 && input > 17)
            {
                grownups[i] = input;
            }

            else if (input == 0)
            {
                break;
            }

            else
            {
                continue;
            }
        }

        Console.Write("\n");
        Console.WriteLine("TODLERS");
        for (int i = 1; i < 11; i++)
        {
            Console.WriteLine("Todler {0} is {1} years old", i, todlers[i]);
        }

        Console.Write("\n");
        Console.WriteLine("CHILDREN");
        for (int i = 1; i < 11; i++)
        {
            Console.WriteLine("Child {0} is {1} years old", i, children[i]);
        }

        Console.Write("\n");
        Console.WriteLine("GROWNUPS");
        for (int i = 1; i < 11; i++)
        {
            Console.WriteLine("Man/Woman {0} is {1} years old", i, grownups[i]);
        }

        Console.ReadKey();
    }
}
类程序
{
静态void Main(字符串[]参数)
{
int[]todlers=新int[10];
int[]子类=新int[10];
int[]成年人=新的int[10];
对于(int i=0;i++)
{
控制台。写入(“给出一个数字(0=停止):”;
int input=int.Parse(Console.ReadLine());
if(todlers.Length<10&&input<5&&input>0)
{
todlers[i]=输入;
}
else if(childrence.Length<10&&input>4&&input<18)
{
儿童[i]=输入;
}
else if(grownups.Length<10&&input>17)
{
成年人[i]=投入;
}
else if(输入=0)
{
打破
}
其他的
{
持续
}
}
控制台。写入(“\n”);
控制台写入线(“TODLERS”);
对于(int i=1;i<11;i++)
{
WriteLine(“Todler{0}是{1}岁的”,i,Todler[i]);
}
控制台。写入(“\n”);
控制台。WriteLine(“儿童”);
对于(int i=1;i<11;i++)
{
WriteLine(“Child{0}为{1}岁”,i,children[i]);
}
控制台。写入(“\n”);
控制台。WriteLine(“成年人”);
对于(int i=1;i<11;i++)
{
WriteLine(“男/女{0}岁”,i,成年人[i]);
}
Console.ReadKey();
}
}

阵列的
长度
不会改变,它在整个程序中与初始化(10)时保持不变。因此,
todlers.Length<10
始终为false

如果您从未将
0
放入数组中,您可以将
todlers.Length<10
替换为
todlers[9]==0
,这将有效地检查您尚未更改数组中的最后一个元素。

for(int i=1;i<11;i++)
for (int i = 1; i < 11; i++)
你应该换成

for (int i = 0; i < 10; i++)
for(int i=0;i<10;i++)
这是因为您使用10个元素初始化数组,第一个元素将为0

Todler[0],Todler[1]。。。托德勒[9]


当你不知道你将拥有多少物品时,使用
列表来存储物品集合。使用
do-while
循环至少运行一次代码块,最多无限次

尝试类似以下内容(未经测试的代码):

使用系统;
使用System.Collections.Generic;
公共课程
{
公共静态void Main(字符串[]args)
{
List todlers=新列表();
列表子项=新列表();
列表成人=新列表();
int输入=0;
做
{
控制台。写入(“给出一个数字(0=停止):”;
input=int.Parse(Console.ReadLine());
if(todlers.Count<10&&input<5&&input>0)
{
添加(输入);
}
否则如果(children.Count<10&&input>4&&input<18)
{
添加(输入);
}
else if(grownups.Count<10&&input>17)
{
成人。添加(输入);
}
}而(输入>0);
控制台。写入(“\n”);
控制台写入线(“TODLERS”);
for(int i=0;i

当有10个条目时,这将停止添加到列表中,但用户不会收到任何警告,因为他们的输入正在被丢弃。如果用户在一个类别中输入的条目少于10条,它也将只输出已添加的条目数,而不是0。

您的数组长度始终为10条,因此没有if的触发器。是的,我也这么认为。不过你建议怎么修?我试着将I<10放入数组中,但这会导致数组超出边界。我也试着将I<10放入数组中,但同样的情况是,您不需要进行.Length<10检查。您将数组设置为int[10]您的愿望在逻辑上不一致。如果您的程序永远循环,新值将存储在哪里?您应该使用
List
而不是
int[]
并且应该使用while循环而不是for循环。@Victor我只想存储前十个值,其余值应该忽略。
using System;
using System.Collections.Generic;
public class Program
{

  public static void Main(string[] args)
  {
    List<int> todlers = new List<int>();
    List<int> children = new List<int>();
    List<int> grownups = new List<int>();
    int input = 0;
    do
    {
        Console.Write("Give a number (0 = stop) : ");
        input = int.Parse(Console.ReadLine());

        if (todlers.Count < 10 && input < 5 && input > 0)
        {
            todlers.Add(input);
        }
        else if (children.Count < 10 && input > 4 && input < 18)
        {
            children.Add(input);
        }
        else if (grownups.Count < 10 && input > 17)
        {
            grownups.Add(input);
        }
    }while(input>0);

    Console.Write("\n");
    Console.WriteLine("TODLERS");
    for (int i = 0; i < todlers.Count; i++)
    {
        Console.WriteLine("Todler {0} is {1} years old", i+1, todlers[i]);
    }

    Console.Write("\n");
    Console.WriteLine("CHILDREN");
    for (int i = 0; i < children.Count; i++)
    {
        Console.WriteLine("Child {0} is {1} years old", i+1, children[i]);
    }

    Console.Write("\n");
    Console.WriteLine("GROWNUPS");
    for (int i = 0; i < grownups.Count; i++)
    {
        Console.WriteLine("Man/Woman {0} is {1} years old", i+1, grownups[i]);
    }

    Console.ReadKey();
  }
}