0

プログラムでユーザー入力と数値入力で配列を埋めたいと思います (その後、プログラムはその数値で特定の計算を行いますが、今のところ重要ではありません)。

入力が行われない場合、プログラムは数値の読み取りを停止して印刷する必要があります。特に解析の場合、いくつかの解決策を試しましたが、コードのどの部分で、おそらくどのような方法で配列内の数値を解析して「できません」型 string を int に暗黙的に変換する」または「型 int[] を int に暗黙的に変換することはできません」。

これは私のコードがどのように見えるかです:

public static void Main (string[] args)
    {
        int[] userInput = new int[100];
        int xuserInput = int.Parse (userInput);

        for (int i = 0; i<userInput.Length; i++)
        {
            userInput[i] = Console.ReadLine ();

            if (userInput == "")
                break;
        }
        Console.WriteLine (userInput);
    }
4

6 に答える 6

2

これを試して:

int[] userInputs = new int[100];
int parsedInput;
int inputs = 0;
bool stop = false;

while (inputs < 100 && !stop)
{

    string userInput = Console.ReadLine();

    if (userInput == "")
    {
        stop = true;
    }
    else if (Int32.TryParse(userInput, out parsedInput))
    {
        userInputs[i] = parsedInput;
        inputs++;
    }
    else
    {
        Console.WriteLine("Please enter a number only!");
    } 
}

for each (int number in userInputs)
{
    Console.WrietLine(number.ToString());
}

このコードはいくつかのことを行います。

まず、whileループを使用して、ユーザーが 100 個の数字を入力するか、データを入力しないようにします。

次に、ユーザーからの入力を取得します。空の入力の場合、stopフラグを true に設定し、ループを終了します。

入力が空でない場合はTryParse、入力が数値かどうかを判断するために使用されます。そうである場合は true を返し、変換された入力が配列に追加され、カウンターがインクリメントされます。

解析が失敗した場合、ユーザーは数値を入力するように求められます。

配列がいっぱいになると、配列をループして各入力を出力します。

于 2013-08-06T09:00:30.943 に答える
2

入力を文字列に取り、それを整数に解析しようとする必要があります。

  public static void Main(string[] args)
  {
     int[] userInput = new int[100];
     int counter = 0;

     for (counter = 0; counter < userInput.Length; counter++)
     {
        string input = Console.ReadLine();

        if (input == "")
           break;
        else
           int.TryParse(input, out userInput[counter]);
     }

     for (int i = 0; i < counter; i++)
     {
        Console.WriteLine(userInput[i]);            
     }

     Console.ReadLine();
  }

パースを試してみると、パースのように例外がスローされません。

解析を使用する場合は、例外をキャッチします

于 2013-08-06T08:52:56.653 に答える
0

次のプログラムは、ユーザーから数値を読み取ります。

ユーザーが無効な番号を入力すると、次のメッセージが報告されます。有効な番号ではありません。

ユーザーが何も入力しない場合、プログラムはユーザーが入力したすべての数値を出力します。

class Program
{
    static void Main(string[] args)
    {
        int[] userInput = new int[10];
        for(int count = 0; count <= 9; count++)
        {
            int number;
            string input = Console.ReadLine();
            bool result = Int32.TryParse(input, out number);
            if (result)
            {
                userInput[count] = number;
            }
            else if (!result)
            {
                if (input != string.Empty)
                    Console.WriteLine("Not a valid number.");
                else if (input.Equals(string.Empty))
                {
                    foreach (var item in userInput)
                    {
                        Console.WriteLine(item.ToString());
                    }
                    Console.WriteLine("Press any key to continue...");
                    Console.ReadKey(true);
                    return;
                }
            }
        }
    }
}

これでよろしければお知らせください。

于 2013-08-06T09:50:19.743 に答える
0

これを使いたいだけかもしれません

    static void Main(string[] args)
    {
      int[] userInput = new int[100];
      string recievedInput = "";  
    for (int i = 0; i<userInput.Length; i++)
    {
        recievedInput = Console.ReadLine();
        int.TryParse(recievedInput, out userInput[i]);
        if (recievedInput == "")
            break;
    }
    Console.WriteLine (userInput); //this will only print the type name of Userinput not all element  
    }
于 2013-08-06T08:57:15.303 に答える
0

問題は、取得した入力を解析するのではなくuserInput、配列であるを解析していることですint.ParseConsole.ReadLine()

int xuserInput = int.Parse (userInput); // Remove this statement.

ユーザー入力を解析するには、次のように解析する必要があります

string input = Console.ReadLine ();
if (input == "")
    break;
else
    int.TryParse(input, out userInput[i]);
于 2013-08-06T08:52:19.960 に答える
0

これを試して。

public static void Main (string[] args)
{
    int[] userInput = new int[100];
    int xuserInput = int.Parse (userInput);

    for (int i = 0; i<userInput.Length; i++)
    {
        int temp = int.Parse(Console.ReadLine());
        userInput[i] = temp;

        if (userInput == "")
            break;
    }
    Console.WriteLine (userInput);
}
于 2013-08-06T08:52:23.647 に答える