【问题标题】:C# adding unknown number of values into an arrayC#将未知数量的值添加到数组中
【发布时间】:2012-08-01 10:42:53
【问题描述】:

我想将多个值添加到一个数组中,但我想在我喜欢的时候停下来。

这是我添加的条件

while (numbers[i] != 10)
{
    i++;
    numbers[i] = int.Parse(Console.ReadLine());
    Console.WriteLine(numbers[i]);
}

当输入的值为 10 时它会停止。但我希望它在我按下 ENTER 时停止。

我该怎么做?

【问题讨论】:

  • 使用可调整大小的集合 - List<int>
  • 答案是使用 turbanoff 所说的集合。看一个和你一样的话题link
  • @O.D 那又怎样?我什至低于那个。
  • @CodesInChaos 这没什么我会引以为豪的。

标签: c# arrays


【解决方案1】:

如果您询问如何检测“只需按 ENTER”条件:

var input = Console.ReadLine();
if (input == "") {
    break;
}

numbers[i] = int.Parse(input);
// etc

【讨论】:

  • @robertpas 那么你应该accept it as the answer
  • 对不起,我不得不等待 5 分钟才能接受它并不得不离开。
【解决方案2】:
var numbers = new List<int>();
string s;
while(!string.IsNullOrEmpty(s = Console.ReadLine())) {
    numbers.Add(int.Parse(s));
}

【讨论】:

  • 根据所需的错误行为,将int.Parse 替换为int.TryParse 也是一个好主意。
  • 如果这是您真正需要的,您可以将其转换为数组:` int[] array = numbers.ToArray();`
【解决方案3】:

我猜你正在寻找重新调整数组大小的方法,你可以使用Array.Resize

【讨论】:

  • 这实际上并没有调整数组的大小。它创建一个具有所需大小的新数组,并复制现有元素。
【解决方案4】:

像这样声明numbers

List<int> numbers = new List<int>();

然后这样修改循环。

while (numbers[i] != 10)
{
    i++;

    string input = Console.ReadLine();
    if (string.IsNullOrEmpty(input)) { break; }

    numbers.Add(int.Parse(input));
    Console.WriteLine(numbers[i]);  
}

【讨论】:

  • 你只回答了一半问题。当输入为空部分时,您完全错过了停止。
  • @CodesInChaos 谢谢!补充说。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-14
  • 2021-11-14
  • 1970-01-01
  • 2018-08-14
相关资源
最近更新 更多