do / while和if / else问题

问题描述 投票:0回答:4
  1. 我必须加上额外的“测试分数”才能得到答案。 (即我必须输入6 5'才能获得25)
  2. 如果在“while”范围之外有多个数字,我无法将do / while和if语句循环。我没有编写很长时间,几周,所以试着打破答案。谢谢您的帮助!

这是我的代码

Console.Write("Enter the number of tests: ");
int n = int.Parse(Console.ReadLine());
int[] scores = new int[n];
Console.WriteLine("----------------------------------------");
Console.WriteLine("Please enter the test scores");
int i;

do
{
    i = Convert.ToInt32(Console.ReadLine());
    if (i < 0)
    {
        Console.WriteLine("Please enter a value greater than 0");

     }

    if (i > 100)
    {
        Console.WriteLine("Please enter a value less than 100");

    }
} while (i < 0 || i > 100);


for (i = 0; i < n; i++)
{
    scores[i] = int.Parse(Console.ReadLine());

}
int sum = 0;
foreach (int d in scores)
{
    sum += d;
}
Console.WriteLine("The sum of all the scores is {0}",sum);
Console.ReadLine();
c# if-statement do-while
4个回答
2
投票

将在do循环中执行输入验证的for块放入:

Console.Write("Enter the number of tests: ");
int n = int.Parse(Console.ReadLine());
int[] scores = new int[n];

Console.WriteLine("----------------------------------------");
Console.WriteLine("Please enter the test scores");

for (int i = 0; i < n; i++)
{
    int input = -1;
    do
    {
        input = Convert.ToInt32(Console.ReadLine());
        if (input < 0)
        {
            Console.WriteLine("Please enter a value greater than 0");    
        }    
        else if (input > 100)
        {
            Console.WriteLine("Please enter a value less than 100");    
        }
    } while (input < 0 || input > 100);

    scores[i] = input;
}

int sum = 0;
foreach (int d in scores)
{
    sum += d;
}

Console.WriteLine("The sum of all the scores is {0}", sum);
Console.ReadLine();

1
投票

n是测试的数量,意味着计数器i的数量应该与测试的数量相同。也更喜欢Convert.ToInt32int.Parse,因为如果它无法进行转换,它会抛出异常。

Console.Write("Enter the number of tests: ");
int n = Convert.ToInt32(Console.ReadLine());
int sum = 0, i = 0, score = 0;
int[] scores = new int[n];
Console.WriteLine("----------------------------------------");

do {
    Console.WriteLine("Please enter the test score #" + (i + 1));
    score = Convert.ToInt32(Console.ReadLine());

    if (score < 0) {
        Console.WriteLine("Please enter a value greater or equal to 0");
    }
    else if (score > 100)
    {
        Console.WriteLine("Please enter a value less or equal to 100");
    }
    else {
        scores[i] = score;
        i++;
    }
} while (i < n);

foreach (int d in scores) {
    sum += d;
}

Console.WriteLine("The sum of all the scores is {0}", sum);
Console.ReadLine();

-1
投票

只是为了潜在的学习机会,而不是直接回答你的问题,这是我做这个练习的方式:

Console.Write("Enter the number of tests: ");
int n = int.Parse(Console.ReadLine());

Console.WriteLine("----------------------------------------");
Console.WriteLine("Please enter the test scores");

int AskForInteger()
{
    while (true)
    {
        if (int.TryParse(Console.ReadLine(), out int i) && i >= 0 && i <= 100)
        {
            return i;
        }
        Console.WriteLine("Please enter a value between 0 and 100 inclusive");
    }
}

int[] scores =
    Enumerable
        .Range(0, n)
        .Select(x => AskForInteger())
        .ToArray();

Console.WriteLine("The sum of all the scores is {0}", scores.Sum());
Console.ReadLine();

-2
投票

有两种选择:

一个。从1开始而不是0 - > for(i = 1; i <n; i ++)

湾将n的值减1 - >为(i = 1; i <n-1; i ++)

祝好运

© www.soinside.com 2019 - 2024. All rights reserved.