【问题标题】:Comparing an int to an array while converting a for-loop to a while-loop在将 for 循环转换为 while 循环时将 int 与数组进行比较
【发布时间】:2018-05-29 07:26:43
【问题描述】:

在处理一个家庭作业问题时,我被赋予了将 for 循环重写为 while 循环的任务,并以此作为 for 循环 sn-p:

int[] numbers = { 2, 3, 5, 7, 11 };

for (int i = 0; i < numbers.Length; ++i)
{
    Console.WriteLine(numbers[i]);
}

到目前为止,我想出的是我认为很接近的东西,但我可能完全错了。我查看了我的书和互联网,试图找出重写的错误之处。重写如下:

int[] numbers = { 2, 3, 5, 7, 11 };

int i;
while (i = numbers)
{
    Console.WriteLine(numbers[i]);
}

【问题讨论】:

  • 条件不会改变。两者都是循环。在这两种情况下,条件都是“while 条件”
  • 您在 while 中的任何地方都没有使用自增运算符
  • @XetriousLee 在将 for 循环转换为 while 循环时,我已经向您介绍了一些简单的小技巧,如果我是您,我会在谷歌上搜索并开始学习如何使用foreach 循环,它不使用++ 增量,但它是Enumerable,这将有助于您在课程进行时理解和学习
  • 我不知道现在查看foreach 将如何帮助他解决这个问题。这个主题似乎在解释循环的一般概念。 foreach 是一些特定于代码的小题干

标签: c# arrays for-loop while-loop


【解决方案1】:

您似乎没有在 while 循环中增加您的 i 值,并且必须将条件更改为类似 i

【讨论】:

  • 非常感谢,当代码改成你的建议后,问题就解决了,谢谢!
【解决方案2】:

你可以这样重写:

int i=0;
while(true)
{
if(i<numbers.Length)
break;

Console.WriteLine(numbers[i]);
i++;

}

或者你可以把 if 条件放在 while 本身...

【讨论】:

  • 打破无限循环而不是直接使用条件有什么好处?
  • 不是真的,因为他不知道while循环等等,阅读后他也可以知道break语句的优点。就是这样……
【解决方案3】:

不想对作业给出完整的答案。但这应该会有所帮助:

一个for循环由三部分组成:

  1. 第一部分将在循环开始之前运行
  2. 第二部分是while 条件。循环在此条件仍然成立时运行。这通常是最棘手的部分。
  3. 第三部分每次运行之后运行循环体

现在,while 条件只有第二部分:while 条件。因此,当从 for 更改为 while 时,您将需要相应地重新排序循环的其余部分。

【讨论】:

    【解决方案4】:
    int[] numbers = { 2, 3, 5, 7, 11 };
    
    int i = 0;
    while (i < numbers.Length)
    {
        Console.WriteLine(numbers[i]);
        i++;
    }
    

    你必须像上面一样增加 i 的值,条件应该是i &lt; numbers.Length,看看这个很棒的example

    【讨论】:

    • 一些初学者会看到并按字面意思写出来,然后回复it doesn't work 我们的答案都是正确的,所以一切都很好。
    • @MethodMan 是的,这是真的
    【解决方案5】:
    int[] numbers = { 2, 3, 5, 7, 11 };
    int i = 0;
    while (i < numbers.Length)
    {
       Console.WriteLine(numbers[i]);
       i++;
    }
    

    这是一个非常简单的方法。您的代码中唯一的问题是 while 条件,并且您没有增加 a i ,它指的是数组的索引。

    【讨论】:

      【解决方案6】:
      int[] numbers = { 2, 3, 5, 7, 11 };
      int i = 0;
      while (i < numbers.Length)
      {
         Console.WriteLine(numbers[i]);
         i++;
      }
      

      确保初始化声明的变量int i;,否则你会收到警告/错误

      此外,i++ 这一行中的(for i=0; i &lt; numbers.Length; ++i) 告诉您的变量i 的计数器以i + 1 递增,&lt; 符号告诉您它将从 0,1 开始以零基数进行迭代,2,3 是 .NET 数组的 4 倍是 0 based,因此要将其转换为 While Loop,要查看的关键事项如下

      i 是你的变量,你应该总是初始化为一个通常为 0 的值

      最后,while 循环底部的i++ 表示,将i 增加1,即i++,转换为i = i + 1

      【讨论】:

        猜你喜欢
        • 2018-02-22
        • 2017-04-26
        • 2018-08-19
        • 1970-01-01
        • 1970-01-01
        • 2022-12-04
        • 1970-01-01
        相关资源
        最近更新 更多