Использование цикла for, чтобы позволить пользователю вводить данные от 1 до 100 - PullRequest
0 голосов
/ 14 октября 2018

Просто начнем с циклов for, и я немного озадачен этим вопросом.В приведенном ниже коде я смог создать массив размером 4. Мне нужно, чтобы пользователи могли вводить 4 разных целых числа в диапазоне от 1 до 100 и сохранять их в массиве.

Мне также нужно убедиться, что пользователь не вводит ничего, что меньше 0 или больше 100. В этом случае я думал об использовании метода try-catch.Будет ли это возможно в цикле?Пожалуйста, сообщите:

 const int SIZE = 4;
int[] array = new int[SIZE];
int numberOfTests = 4;

for (int count = 0; count < numberOfTests; count++) // Start the count from 0-4
{
    int min = 0;
    int max = 100;

    Console.WriteLine("Please enter test score " + count); 
}

Ответы [ 3 ]

0 голосов
/ 14 октября 2018

Try and catch не предназначен для проверки условий ввода, для чего предназначен оператор if.Попробуйте и поймайте, если для тестирования, что код способен работать, и если нет предоставления альтернативы.Например, если пользователь ввел строку, оператор try and catch остановит сбой программы.Надеюсь, это поможет

const int numberOfTests = 4;
int[] array = new int[numberOfTests];

for (int count = 0; count < numberOfTests; count++)
{
    Console.WriteLine("Please enter test score " + count);
    try
    {
        int answer = Convert.ToInt32(Console.ReadLine());

        if (answer > 0 && answer < 101)
             array[count] = answer;
        else Console.WriteLine("Please provide a value between 1-100");

    }
    catch
    {
        Console.WriteLine("Please provide an integer");
    }
}
0 голосов
/ 14 октября 2018

Полагаю, вы знаете, как использовать try-catch в «правильном сценарии».Кажется, вам нужно перехватывать каждое входное исключение, пока вы думали, используя метод try catch.В этом случае я предлагаю определить новый целочисленный класс для вас.так как вы хотите использовать try-catch.Бросьте исключение для входных данных вне диапазона или того, что вы ожидаете.Код будет таким:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

class MyInt
{
    public MyInt(int i)
    {
        Data = i;
    }

    private int _data;
    public int Data
    {
        get => _data;
        set
        {
            if(value<0||value>100)throw new ArgumentOutOfRangeException();
            _data = value;
        }
    }
}

public static void Main()
{
    MyInt[] array = new MyInt[4];

    int min = 0;
    int max = 100;
    for (int count = 0; count < array.Length; count++) // Start the count from 0-4
    {
        Console.WriteLine("Please enter test score " + count);
        try
        {
            array[count] = new MyInt(int.Parse(Console.ReadLine()));
        }
        catch (Exception exception)
        {
            Console.WriteLine($"Input exception :{exception}/n, Please input a valid number between {min} and {max}");
            count--;
        }
    }

    Console.WriteLine($"The array result here, eg. Sum of all :{array.Sum(i=>i.Data)}");
    Console.ReadKey();
}
0 голосов
/ 14 октября 2018

Я бы изменил это на то, что я думаю, что вы хотите сделать:

        const int SIZE = 4;
        int[] array = new int[SIZE];
        int numberOfTests = 4;

        for (int count = 0; count < numberOfTests; count++) // Start the count from 0-4
        {
            int min = 0;
            int max = 100;

            int countf = count + 1;

            Console.WriteLine("Please enter test score " + countf);
            int a = Convert.ToInt32(Console.ReadLine());
            if (a > 0 && a < 101)
            {
                array[count] = a;
            }

        }
        Console.WriteLine("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
        Console.WriteLine(array[0]);
        Console.WriteLine(array[1]);
        Console.WriteLine(array[2]);
        Console.WriteLine(array[3]);
        Console.ReadLine();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...