0

これは私の大学のコースのためのもので、締め切りは 2 日後です。プログラムのコードのテストを終了し、それまでに評価する必要があります。

以下はルーチンコードです。

public static string getValidString(string prompt, int maxLength)
{
    bool valid = false; 
    //The paramter valid is set as a boolean and is set to false. 
    //It is set as a boolean because it is a small data type and 
    //only needs to have true or false
    string tempData = "";
    do // Do while loop is repetition and carries on doing it until the condition becomes true
    {
        Console.Write(prompt + " ?");
        tempData = Console.ReadLine();
        if (tempData == "")
            displayMessage("You have not entered any data, please try again");
        else if (tempData.Length < 3)
            displayMessage("You have not entered text longer than 3, please try again");
        else if (tempData.Any(c => char.IsDigit(c)))
            displayMessage("You have not entered text, please try again");
        else if (tempData.Length > maxLength)
            displayMessage("Name too long it must be 20 or less, please try again");
        else
            valid = true;
    }
    while (valid == false);
    return tempData;
}

そして、エラーが添付されている私のプログラムのコードは以下のとおりです。これを修正するにはどうすればよいですか? ありがとうございました

private void btncustCont_Click(object sender, EventArgs e)
{
    txtName.Text = custName[numCust];
    txtPhoneNumber.Text = custPhone[numCust];
    string sError = "";
    sError = routine.getValidString("Customer Name", txtName.Text, 3, 30);
    sError += routine.getValidString("Customer Phone Number", txtPhoneNumber.Text, 3, 30);
    if (sError != "")
    MessageBox.Show(sError, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

    if (sError == "")
        grpPrint.Enabled = true;
}
4

4 に答える 4

3

メソッドgetValidStringには2つの入力があります:string promptおよびint maxLength

ただし、2 つの文字列と 2 つの整数 (合計 4 つ) を送信しています。("Customer Name", txtName.Text, 3, 30)

getValidStringこのように4つの入力を取得するオーバーロードのいずれか

public static string getValidString(string prompt, string name, int length, int maxLength)

または 1 つだけstringint:を送信します。

routine.getValidString("Customer Phone Number", 30);
于 2013-08-28T17:04:53.950 に答える
1

メソッドは 2 つのパラメータのみで定義されていますpublic static string getValidString(string prompt, int maxLength)。しかし、あなたは4でそれを呼び出しています:sError = routine.getValidString("Customer Name", txtName.Text, 3, 30);

欠落しているパラメーターを getValidString に追加します。public static string getValidString(string prompt, int maxLength, int foo, int bar)

また

または、sError 行からそれらを削除します。sError = routine.getValidString("Customer Name", txtName.Text);

于 2013-08-28T17:03:57.393 に答える
1

getValidString渡そうとする引数を受け入れるバージョンがないことを単に言っているだけです。メソッドの定義を確認してください。これは、マウスオーバーすることで実行できます。オーバーロードがある場合は、それらを循環する小さな矢印が表示されます。情報は、どのタイプがどのような順序で受け入れられるかを示します。

ああ、あなたの定義が上にリストされていることに気づきました。ご覧のとおり、string と int のみを受け入れます。引数リストでそれを呼び出そうとしています。文字列、文字列、整数、整数。これらの引数をすべて受け入れるようにメソッドを変更するか、文字列と int で呼び出すように呼び出しコードを変更する必要があります。

于 2013-08-28T17:04:05.880 に答える
1

関数シグネチャは次のように定義されます。

public static string getValidString(string prompt, int maxLength) { /* CODE */ }

prompt(a string) とmaxLength(an ) の2 つの引数を取りますint

後で呼び出すときは、次の 4 つの引数を渡します。

sError = routine.getValidString("Customer Name", txtName.Text, 3, 30);

渡す引数 ( 、、、 ) にgetValidString()一致する署名がないため、C# コンパイラでエラーが発生しています。stringstringintint

于 2013-08-28T17:05:07.460 に答える