2

我正在尝试制作一个程序,该程序可以根据用户给出的数字计算一些特定数据。在此示例中,我的程序计算范围 (10,103) 内可被 2 整除的数字数量,以及范围 (15,50) 内可被 3 整除的数字数量在用户给出的数字内。在这个阶段,当给出 10 个数字时,我的程序会给出结果(正如我在循环中指定的那样)。如何让我的程序停止读取数字并在用户输入一个空行时给出结果,无论他之前输入的是 5 个还是 100 个数字?

这是我的代码,因为它现在看起来:

using System;

namespace Program1
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            int input10_103_div_2 = 0;
            int input15_50_div_3 = 0;

            for (int i = 0; i < 10; i++)
            {
                string input = Console.ReadLine ();
                double xinput = double.Parse (input);

                if (xinput > 10 && xinput <= 103 && (xinput % 2) == 0)
                {
                    input10_103_div_2++;
                }
                if (xinput > 15 && xinput < 50 && (xinput % 3) == 0) 
                {
                    input15_50_div_3++;
                }
            }
            Console.WriteLine ("Amount of numbers in range (10,103) divisible by 2: " + input10_103_div_2);
            Console.WriteLine ("Amount of numbers in range (15,50) divisible by 3: " + input15_50_div_3);
        }
    }
}
4

3 回答 3

5

而不是 for,做:

string input = Console.ReadLine();
while(input != String.Empty)
{
     //do things
     input = Console.ReadLine();
}

如果您尝试允许任意数量的输入。或者

if(input == "")
    break;

如果你想要 for 循环

于 2013-07-15T17:18:34.647 回答
2

将循环更改为永远运行并在字符串为空时跳出循环:

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

    // rest of code inside loop goes here
}
于 2013-07-15T17:22:17.683 回答
0

如果要重组循环,可以使用do while循环:

string input;
do{
    input = Console.ReadLine();
    //stuff
} while(!string.IsNullOrEmpty(input));

如果你只想早点休息:

string input = Console.ReadLine ();
if(string.IsNullOrEmpty(str))
  break;
double xinput = double.Parse (input);   
于 2013-07-15T17:19:43.743 回答