当循环无意中中断时

我正在接受C#培训的第二周,所以我对编程很陌生。我必须做一个程序,从一系列随机整数输入中返回最小的整数。一旦输入=0,程序应该脱离循环。我只允许使用while和for循环。由于某些原因,我的程序在第二个输入之后就脱离了循环,而且看起来它甚至不关心是否有 “0”。请您看看我哪里出了问题?我一直在为这个问题伤透脑筋。如果这个问题已经有人发过了,对不起,但我没有在任何地方找到答案。

PS:零输入应该是考虑到了比较.所以这是我目前的情况。

 class Program
 {
     static void Main()
     {
        int i = 0;
        int input = Int32.Parse(Console.ReadLine());
        int min = default;

        while (input != 0)
        {
            Console.ReadLine();
            if (i == 0)
            {
                min = input;
                break;
            }

            if (input < min && i !=0)
            {
                input = Convert.ToInt32(Console.ReadLine());
                min = input;
            } 
            i++;
        }
        Console.WriteLine(min);
    }

解决方案:

首先,你需要重新阅读以下文档。for-while-loops. 有几个有用的页面……例如……。对于 .

问题

循环中断的原因是你初始化了 i0.

int i = 0; 

在你的循环中,你使用的是 if-如果出现””的情况,就会中断循环。i0“得到了满足。

if (i == 0)
{
    min = input;
    break;
}

用户在每次循环迭代时必须提供的输入信息会被你的程序忽略,因为你从来没有将这种信息存储到任何变量中。

while (input != 0)
{
    Console.ReadLine(); 
    // ...
}

可能的解决方案

作为一个初学者,一步步解决任务是很有帮助的。试着写下这每一个步骤,定义一个简单的算法。由于这个问题有很多解决方案,一个可能的方法是。

  1. 宣告最小值+指定最大值
  2. 使用while循环和循环,直到符合特定条件。
  3. 读取用户输入的信息,并尝试将其转换为整数。
  4. 检查数值是否为0
    • 4.1. 如果数值为0,转到步骤8。
    • 4.2. 如果数值不是0,则转到步骤5。
  5. 检查该值是否小于当前最小值。
    • 5.1. 如果数值较小,转到步骤6。
    • 5.2. 如果数值不小,回到步骤3。
  6. 设置新的最小值
  7. 回到步骤3
  8. 破环
  9. 节目结束

处理上述步骤的程序可以是这样的。

using System;

namespace FindMinimum
{
    public class Program
    {
        static void Main(string[] args)
        {
            // Declare minimum value + assign initial value
            int minValue = int.MaxValue;

            // Loop until something else breaks out
            while (true)
            {
                Console.WriteLine("Please insert any number...");

                // Read io and try to parse it to int
                bool parseOk = int.TryParse(Console.ReadLine(), out int num);

                // If the user did not provide any number, let him retry
                if (!parseOk)
                {
                    Console.WriteLine("Incorrect input. Please insert numbers only.");
                    continue;
                }

                // If the user typed in a valid number and that number is zero, break out of the loop
                if (parseOk && num == 0)
                {
                    break;
                }

                // If the user typed in a valid number and that number is smaller than the minimum-value, set the new minimum
                if (parseOk && num < minValue)
                {
                    minValue = num;
                }
            }

            // Print the result to the console
            Console.WriteLine($"Minimum value: {minValue}.");

            // Keep console open
            Console.ReadLine();
        }
    }
}

给TA打赏
共{{data.count}}人
人已打赏
未分类

Tomcat服务器无响应 "http-nio-80-Acceptor-0"

2022-9-23 11:22:57

未分类

打印功能中的冲洗是什么?[重复]

2022-9-23 11:22:59

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索