如何在for循环期间保持数组列表中元素的计数

  • 本文关键字:列表 数组 元素 for 循环 c#
  • 更新时间 :
  • 英文 :

using System;
using System.Collections;
using System.Collections.Generic;
namespace UseAllInArrasys
{
class Program
{
public static void Main(string[] args) 
{
int num = 0;
Console.WriteLine("=========Print numbers stored in ArrayList==========");
ArrayList numbers = new ArrayList();

for (int i = 0; i <= 5; i++)
{
Console.Write("Enter any number: ");
while (!int.TryParse(Console.ReadLine(), out num))
{
Console.Clear();
Console.Write("Invalid input");
Console.ReadLine();
Console.Clear();
Console.Write("Enter any number: ");
}
numbers.Add(num);
}
foreach (var item in numbers)
{
Console.WriteLine(item);
}

}
}
}

我尝试得到下面的输出比如说当代码运行时,它执行并请求Console.Write("输入任意数字:");如果用户输入空白或字符,则跳转到Console.Write("无效input";它再次要求Console.Write("输入任意数字:");只要用户输入的是数字代码移动到数组列表

中的下一个索引但它应该打印清除屏幕后输入的第一个数字第二步也是一样,等等

在相同的代码中,我如何控制for循环,而不是I <= 5,我如何提到数组列表的计数或大小,以使循环只执行那么多次。

我试过了ArrayList number = new ArrayList(5);For (int I = 0;i <= numbers.Count;我+ +)//容量

但是不工作

不要用ArrayList

重要的

我们不建议您使用ArrayList类的新发展。相反,我们建议您使用通用的List<T>类。ArrayList类被设计为容纳异构对象集合。然而,它并不总是提供最好的表演相反,我们建议如下:

  • 对于异构的对象集合,使用List<Object>(inc#)或List(Of Object)(Visual Basic)类型。
  • 表示均质对象的集合,使用List<T>类。请参阅性能注意事项在List<T>参考主题中进行讨论这些类的相对性能。请参阅不应使用非泛型集合在GitHub上获取使用的一般信息泛型而非泛型集合类型。

使用数字。容量而不是计数,下面是修改后的代码:

static void Main(string[] args)
{
int num = 0;
Console.WriteLine("=========Print numbers stored in ArrayList==========");
ArrayList numbers = new ArrayList(5);

for (int i = 0; i < numbers.Capacity; i++)
{
Console.Write("Enter any number: ");
while (!int.TryParse(Console.ReadLine(), out num))
{
Console.Clear();
Console.Write("Invalid input");
Console.ReadLine();
Console.Clear();
Console.Write("Enter any number: ");
}
numbers.Add(num);
}
foreach (var item in numbers)
{
Console.WriteLine(item);
}

}

根据附加问题,你可以捕获userInput供以后使用,通过改变for循环,像这样:

for (int i = 0; i < numbers.Capacity; i++)
{
Console.Write("Enter any number: ");
string userInput = Console.ReadLine();

while (!int.TryParse(userInput, out num))
{
Console.Clear();
Console.Write("Invalid input: " + userInput);
Console.ReadLine();
Console.Clear();
Console.Write("Enter any number: ");
userInput = Console.ReadLine();
}
numbers.Add(num);
}

它将根据数组的计数进行循环。

for (int i = 0; i <= 5; i++)
{
Console.Write("Enter any number: ");
while (!int.TryParse(Console.ReadLine(), out num))
{
Console.Clear();
Console.Write("Invalid input");
Console.ReadLine();
Console.Clear();
Console.Write("Enter any number: ");
}
numbers.Add(num);
foreach (var item in numbers)
{
Console.WriteLine(item);
}
}

可以从用户处获取总计数并将其用作计数器。

namespace UseAllInArrasys
{
class Program
{
public static void Main(string[] args) 
{
var num = 0;
Console.WriteLine("=========Print numbers stored in ArrayList==========");
Console.Write("Enter how many numbers you want: ");
int.TryParse(Console.ReadLine(), out var totalCount);
IList integerList = Enumerable.Range(0, totalCount).ToList();;
var fixedSize = ArrayList.FixedSize(integerList);

for (var i = 0; i < totalCount; i++)
{
Console.Write("Enter any number: ");
while (!int.TryParse(Console.ReadLine(), out num))
{
Console.Clear();
Console.Write("Invalid input");
Console.ReadLine();
Console.Clear();
Console.Write("Enter any number: ");
}
Console.WriteLine($"You entered {num}");
numbers.Add(num);
}
foreach (var item in fixedSize)
{
Console.WriteLine(item);
}
}
} 
}

最新更新