使用用户输入创建一个数组 [英] Create an array with user's input

查看:155
本文介绍了使用用户输入创建一个数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想创建一个循环,它只持续到用户给出正确的输入。

需求是:

数字应该介于1到100之间输入的数字不应与之前相同。



我尝试过:



I want to create a loop that only last until the right input is given by the user.
Requriments are:
The number should be between 1 t0 100 and the number entered should not be same as previous.

What I have tried:

for (int i = 0; i < Number.Length; i++)
{
Console.WriteLine("Enter number 1. The number must be between 1-100");
Number[i] = Int32.Parse(Console.ReadLine());

    if (Number[i] < 1)
    {
        Console.WriteLine("Please reenter number. The number must be between 1-100");
    }

    else if (Number[i] > 100)
    {
        Console.WriteLine("Please reenter number 1. The number must be between 1-100");
    }
    else
    {
       //store the value in the array
        Number[i] = Number[i];
    }


}

for (int i = 0; i < Number.Length; i++)
{

    Console.WriteLine("Enter number 2. The number must be between 1-100");
    Number[i] = Int32.Parse(Console.ReadLine());

    if (Number[i] < 1)
    {
        Console.WriteLine("Number less than 1. Please reenter number 2.
The number must be between 100");
    }
    else if (Number[i] > 100)
    {
        Console.WriteLine("Please reenter number 2. The number must be between 1-100");
    }
    else if (Number[i] == Number[i])
    {
        Console.WriteLine("Numbers must be unique. It cannot match any of the pervisouly entered numbers");
    }
    else
    {
        Number[i] = Number[i];
    }
}

for (int i = 0; i < Number.Length; i++)
{
    Console.WriteLine("Enter number 3. The number must be between 1-100");
    Number[i] = Int32.Parse(Console.ReadLine());

    if (Number[i] < 1)
    {
        Console.WriteLine("Please reenter number 3. The number must be between 1-100");
    }
    else if (Number[i] > 100)
    {
        Console.WriteLine("Please reenter number 3. The number must be between 1-100");
    }
    else if (Number[i] == Number[i])
    {
        Console.WriteLine("Numbers must be unique. It cannot match any of the pervisouly entered numbers");
    }
    else
    {
        Number[i] = Number[i];
    }

推荐答案

你的逻辑过于复杂。你可以在一个循环中完成所有操作。此外,您需要学习将逻辑封装到方法/函数/类中,以便重用代码并使其更具可读性。

Your logic is overly complicated. You can do all in one loop. Also you need to learn to encapsulate logic into methods/functions/classes in order to reuse code and make it more readable.
for (int i = 0; i < Number.Length; i++)
{
    while (true) // loop until you have correct number
    {
        var number = ReadNumber();
        if (IsValid(number))
        {
            Number[i] = number; // store if it's correct
            break; // exit the inner while-loop as we have correct number
        }
    }
}

int ReadNumber()
{
    Console.WriteLine("Enter number 1. The number must be between 1-100");
    return Int32.Parse(Console.ReadLine());
}

bool IsValid(int number)
{
    if (number < 1)
    {
        Console.WriteLine("Please reenter number. The number must be between 1-100");
        return false;
    }
    if (number > 100)
    {
        Console.WriteLine("Please reenter number. The number must be between 1-100");
        return false;
    }
    return true;
}



我没有通过编译器运行它,所以可能存在拼写错误。我也没有故意包括唯一性检查。试着自己解决这个问题,因为这是封装的另一个练习。


I didn't run this through compiler so there may be typos. I also didn't include uniqueness check on purpose. Try to figure that on your own as this is another exercise in encapsulation.


这篇关于使用用户输入创建一个数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆