Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建一个C#程序,该程序要求使用循环的1到100之间的值_C# - Fatal编程技术网

如何创建一个C#程序,该程序要求使用循环的1到100之间的值

如何创建一个C#程序,该程序要求使用循环的1到100之间的值,c#,C#,因此,我试图创建一个C#程序,要求输入一个介于1和100之间的值,该程序使用一个循环来确定1和输入值之间的所有值的总和,如果输入的数字小于1或大于100,它将打印“对不起,再试一次”。我已经为此工作了几天,但我无法让它打印总和,我一直得到0,每当我测试它并输入一个小于1或大于100的数字时,它都不会打印我想要的错误消息。代码如下: using System; namespace PrintSumL { class Program { static void Main(string[]

因此,我试图创建一个C#程序,要求输入一个介于1和100之间的值,该程序使用一个循环来确定1和输入值之间的所有值的总和,如果输入的数字小于1或大于100,它将打印“对不起,再试一次”。我已经为此工作了几天,但我无法让它打印总和,我一直得到0,每当我测试它并输入一个小于1或大于100的数字时,它都不会打印我想要的错误消息。代码如下:

using System;

namespace PrintSumL
{
class Program
{
    static void Main(string[] args)
    {

        Console.WriteLine("Enter a beginning value between 1 and 100");
        int s = Convert.ToInt32(Console.ReadLine());


        int sum = 0;

        Console.WriteLine("Sum of values: " + sum);
        Console.ReadKey();


        Random rand = new Random();
        rand.Next(1, 51);


        while (0 < s && s < 101)
        {
            sum += s;
            s++;
            if (s < 0 && 101 < s)
            {

                Console.WriteLine("Invalid input. Try again.");
            }

            {

            }
            {

            }
        }
    }
}
}
使用系统;
名称空间PrintSumL
{
班级计划
{
静态void Main(字符串[]参数)
{
Console.WriteLine(“输入介于1和100之间的起始值”);
int s=Convert.ToInt32(Console.ReadLine());
整数和=0;
Console.WriteLine(“值之和:+Sum”);
Console.ReadKey();
Random rand=新的Random();
兰德·奈特(1,51);
而(0
如果需要循环,则应遵循Heath Raftery的说明

否则,您可以编写类似以下内容:

 static void Main(string[] args)
 {
     Console.WriteLine("Enter a beginning value between 1 and 100");
     int s = Convert.ToInt32(Console.ReadLine());
     if (s < 0 || s > 100)
         Console.WriteLine("Invalid input. Try again.");
     else
         Console.WriteLine($"Sum of values: {Enumerable.Range(1,s).Sum()}");
 }

您可以将程序视为从上到下逐行执行,并且只有在到达while循环结束时才向上移动。while循环的结尾是与循环开始处的
{
匹配的
}

知道了这一点,你就能明白为什么它总是说和为零。从你的代码中:

int sum = 0;

Console.WriteLine("Sum of values: " + sum);
由于程序执行“从上到下逐行”操作,它将首先将
总和设置为0,然后打印总和。因此,它将始终打印
“值总和:0”
。如果您希望它在计算完总和后打印总和,则需要将
写线下移到计算总和的下方

同样的问题也适用于
“无效输入。请重试。”
:打印此语句的行出现在
之后,而(0
,因此仅当
s
介于0和101之间时才会执行。由于您试图捕捉
s
不在0和101之间的场景,因此需要将语句移动到
while
循环上方

因此,要解决眼前的问题,只需做两件事:

1) 移动两行

Console.WriteLine("Sum of values: " + sum);
Console.ReadKey();
在while循环之后(就在与while缩进级别相同的
}
之后)

2) 移动三行

if (s < 0 && 101 < s)
{
    Console.WriteLine("Invalid input. Try again.");
}
if(s<0&&101

最多只在
ints=Convert.ToInt32(Console.ReadLine())下方,然后再次检查逻辑。如果
s
小于零,或者
s
大于101,听起来像是要打印语句。

试试这个:

static void Main(string[] args)
        {
            while (true)
            {
                Console.Write("Enter a number between 1 and 100: ");
                int Number = Convert.ToInt32(Console.ReadLine());
                if (Number < 0 || Number > 100)
                    Console.WriteLine("Sorry. Try again.");
                else
                {
                    int sum = 0;
                    for (int i = 1; i <= Number; i++)
                    {
                        sum = sum + i;
                    }

                    Console.WriteLine("Sum of values: " + sum);
                }
            }
        }
static void Main(字符串[]args)
{
while(true)
{
Console.Write(“输入一个介于1和100之间的数字:”);
int Number=Convert.ToInt32(Console.ReadLine());
如果(数字<0 | |数字>100)
控制台。WriteLine(“对不起,再试一次。”);
其他的
{
整数和=0;

对于(inti=1;i,这里有一个有效的算法

        Console.WriteLine("Enter a value between 1 and 100");
        var input = int.Parse(Console.ReadLine());
        int sum = 0;
        if (input<1 || input>100) {
            Console.WriteLine("Sorry, Try again");
        }
        else{
            while(input > 2){
                input-=1;
                sum+=input;
             }
        }
        Console.WriteLine("Sum of values: " + sum);
Console.WriteLine(“输入一个介于1和100之间的值”);
var input=int.Parse(Console.ReadLine());
整数和=0;
如果(输入100){
Console.WriteLine(“对不起,再试一次”);
}
否则{
while(输入>2){
输入-=1;
总和+=输入;
}
}
Console.WriteLine(“值之和:+Sum”);

而(0
意味着,如果
s
超出范围0和101,则内部代码块将不会执行。因此,“对不起”消息将永远不会显示。数字1到N的和有一个公式:
1+2+…+N=N(N+1)/2
。如果输入50,您可以只计算
sum=50*51/2
(s<0&&101
,这永远不可能是
真的
。一个值不能小于
0
,因此它必须是负数,并且大于
101
,这显然是一个正数。你要使用
|
,而不是
&
。如果我键入像20这样的数字,它仍然会说和是0。当然,你永远不会在h之后打印和的值当然,经过计算,这是可行的,但你忽略了约束。使用循环显然是一种一流的作业,使用枚举和Linq很难成为新手的论据。如果我们不使用循环,你也可以使用公式
N*(N+1)“2 / <代码>并没有列举任何东西。仍然忽略了房间里的大象。Calc是错误的,如果它永远不会是TtruEk,那么就很重要了,现在就采取婴儿的步骤来陶冶,而不是仅仅解决它。一旦代码< C<< /代码>的程序性变得显而易见,大量的学习就会到来。提示OP:考虑<代码)。> -< /COD>而不是<代码> S++<代码>,并考虑为什么它可能会产生更多的信息。如果键入像105或-1这样的数字,它不给我错误信息,它只应该打印一次和,例如“值和为330”。“太好了,那么您已经找到了接下来的两个问题。s的值是
s<0&&101
?105?-1?50?实际上没有。试试
s。”
        Console.WriteLine("Enter a value between 1 and 100");
        var input = int.Parse(Console.ReadLine());
        int sum = 0;
        if (input<1 || input>100) {
            Console.WriteLine("Sorry, Try again");
        }
        else{
            while(input > 2){
                input-=1;
                sum+=input;
             }
        }
        Console.WriteLine("Sum of values: " + sum);