0

これは私の現在のコードです:

string userName = "";
        int v1 = 0, v2 = 0, v3 = 0, v4 = 0, v5 = 0;
        int sum = 0;
        float avg;
        float variance;

        Console.WriteLine("Please enter your name:");
        userName = Console.ReadLine();
        Console.WriteLine("Please enter in a number between 10 and 50: ");
        int inputCheck = 0;
        inputCheck = Convert.ToInt32(Console.ReadLine());

        for (int i = 0; i <= v5; i++)
        {
            if (i == v1)
            {
                v1 = inputCheck;
                if (v1 < 10 || v1 > 50)
                {
                    Console.WriteLine("The number you have entered is invalid please enter a new variable: ");
                }
                continue;
            }
            if (i == v2)
            {
                v2 = inputCheck;
                if (v2 < 10 || v2 > 50)
                {
                    Console.WriteLine("The number you have entered is invalid please enter a new variable: ");
                }
                continue;
            }
            if (i == v3)
            {
                v3 = inputCheck;
                if (v3 < 10 || v3 > 50)
                {
                    Console.WriteLine("The number you have entered is invalid please enter a new variable: ");
                }
                continue;
            }
            if (i == v4)
            {
                v4 = inputCheck;
                if (v4 < 10 || v4 > 50)
                {
                    Console.WriteLine("The number you have entered is invalid please enter a new variable: ");
                }
                continue;
            }
            if (i == v5)
            {
                v5 = inputCheck;
                if (v5 < 10 || v5 > 50)
                {
                    Console.WriteLine("The number you have entered is invalid please enter a new variable: ");
                }
                continue;
            }

v1が50より大きいか10より小さい場合にメッセージが表示されることをコンソールに正しく識別させています。しかし、コードは停止し、変数の要求を続行しません。for ループと if ループで何が起こっているのかを追ってみましたが、道に迷ってしまいました。ループと 1 つの console.readlin(); を使用して、5 つの変数を取得する必要があります。なぜ私がこの質問をしているのかについて、それが少しでも役立つなら。

4

5 に答える 5

2

There are a few issues with your code. As others have pointed out,

int v5 = 0;
for (int = 0; i < v5; i++) ...

Means you will never enter the for loop because i < v5 is false.

Secondly, it seems like you're trying to loop through v1 - v5 as variables. This is not the correct way to perform a loop over an arbitrary number of variables. You will need an array or some other type of collection.

Probably what you want is something like this:

string userName = "";
int[] v= new int[5];
int sum = 0;
float avg;
float variance;

Console.WriteLine("Please enter your name:");
userName = Console.ReadLine();
Console.WriteLine("Please enter in a number between 10 and 50: ");

for (int i = 0; i < v.Length; i++)
{
    int inputCheck = Convert.ToInt32(Console.ReadLine());
    while (inputCheck < 10 || inputCheck > 50)
    {
        Console.WriteLine("The number you have entered is invalid please enter a new variable: ");
        inputCheck = Convert.ToInt32(Console.ReadLine());
    }
    v[i] = inputCheck;
}
于 2013-02-19T02:08:30.390 に答える
2

ループ内のエラー:

  1. for (int i = 0; i <= v5; i++)v5 = 0 であるため、ループは 1 回だけ実行されます。

  2. inputCheck = Convert.ToInt32(Console.ReadLine());番号を一度しか読み取らず、ループを run に修正したとしても、ユーザーからの入力は一度だけであるため、ループ内5 timesを移動する必要があります。inputCheck = Convert.ToInt32(Console.ReadLine());

  3. 1 から 50 までの入力のチェックは、すべての変数に対して同じ制限があるため、ループ内で改善できます。

この方法を試してください:

    string userName = "";
    int v1 = 0, v2 = 0, v3 = 0, v4 = 0, v5 = 0;
    int sum = 0;
    float avg;
    float variance;

    Console.WriteLine("Please enter your name:");
    userName = Console.ReadLine();
    Console.WriteLine("Please enter in a number between 10 and 50: ");
    int inputCheck = 0;


    for (int i = 0; i < 5; i++)
    {
        inputCheck = Convert.ToInt32(Console.ReadLine());

        while (!(inputCheck < 10 || inputCheck > 50))
        {
             switch (i)
            {

                case 1:
                    v1 = inputCheck;
                    break;

                case 2:
                    v2 = inputCheck;
                    break;

                case 3:
                    v3 = inputCheck;
                    break;

                case 4:
                    v4 = inputCheck;
                    break;

                case 5:
                    v5 = inputCheck;
                    break;


            }
        }

    }
于 2013-02-19T02:04:22.657 に答える
2

Console.WriteLine("Please enter your name:");再度入力が必要な場合は、とをループuserName = Console.ReadLine();の先頭に配置する必要があります。for

于 2013-02-19T02:04:30.267 に答える
2

それは 0 のように見えるv5ので、ループは 1 回だけ実行されます。

for (int i = 0; i <= v5; i++) //this will be true only once because v5 = 0
于 2013-02-19T02:05:34.553 に答える
0
for (int i = 0; i <= v5; i++)
    {
        if (i == v1)
        {
            v1 = inputCheck;
            if (v1 < 10 || v1 > 50)
            {
                Console.WriteLine("The number you have entered is invalid please enter a new variable: ");
            }
            continue;
        }

        ...
     }

ループには最初の反復のみが含まれます。continue;最初の繰り返し にあるからです。v5常に 0 になります。i最初の後に 1 に変更されcontinue;、次にi <= v5- false (1 > 0 :) ) に変更され、ループが完了します。

于 2013-02-19T04:39:48.157 に答える