0

String[] sEmails;10個の異なる(ただし類似した)文字列(この場合は電子メールアドレス)を入力しようとしている文字列配列が定義されています。

これが、配列にデータを入力するために使用しようとしているコードです。

public void populateEmailArray()
    {
        for (int x = 0; x < 10; x++)
        {
            switch(x)
            {
                case 1:
                    sEmails[x] = sRepStuff + "1" + sGmail; 
                break;
                case 2:
                    sEmails[x] = sRepStuff + "2" + sGmail;
                break;
                case 3:
                    sEmails[x] = sRepStuff + "3" + sGmail;
                break;
                case 4:
                    sEmails[x] = sRepStuff + "4" + sGmail;
                break;
                case 5:
                    sEmails[x] = sRepStuff + "5" + sGmail;
                break;
                case 6:
                    sEmails[x] = sRepStuff + "6" + sGmail;
                break;
                case 7:
                    sEmails[x] = sRepStuff + "7" + sGmail;
                break;
                case 8:
                    sEmails[x] = sRepStuff + "8" + sGmail;
                break;
                case 9:
                    sEmails[x] = sRepStuff + "9" + sGmail;
                break;
            }
        }
    }

最終結果私はこのようなものになりたい

sEmails['repstuff1@gmail.com','repstuff2@gmail.com','repstuff3@gmail.com']などなど、repstuff9@gmail.comに送信します。

しかし、最初に設定しようとするとsEmails[x]、「NullReferenceExceptionが処理されませんでした。オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。

コードが頭の中で聞こえているように見えるので、ここで何が間違っているのかわかりません。これに関する助けをいただければ幸いです。

4

4 に答える 4

4

で配列をインスタンス化してみてください

String[] sEmails = new String[10];

そのループをはるかに簡潔にすることもできます。

public void populateEmailArray()
{
    for (int x = 0; x < 10; x++)
    {

        sEmails[x] = sRepStuff + x + sGmail; 
    }
}
于 2012-05-06T04:19:01.553 に答える
0

配列は1ではなく0からインデックス作成を開始するためsEmails[0]、値を指定していません。すべての値を1つ下げます。その後、sEmails [0]にアクセスすると、まだ。になりますnull。また、sEmails配列がインスタンス化されていることを確認する必要があります。

sEmails = new String[10];

これは機能するはずです:

public void populateEmailArray()
{
       sEmails = new String[10];
        for (int x = 0; x < 10; x++)
        {
            switch(x)
            {
                case 0:
                    sEmails[x] = sRepStuff + "1" + sGmail; 
                break;
                case 1:
                    sEmails[x] = sRepStuff + "2" + sGmail;
                break;
                case 2:
                    sEmails[x] = sRepStuff + "3" + sGmail;
                break;
                case 3:
                    sEmails[x] = sRepStuff + "4" + sGmail;
                break;
                case 4:
                    sEmails[x] = sRepStuff + "5" + sGmail;
                break;
                case 5:
                    sEmails[x] = sRepStuff + "6" + sGmail;
                break;
                case 6:
                    sEmails[x] = sRepStuff + "7" + sGmail;
                break;
                case 7:
                    sEmails[x] = sRepStuff + "8" + sGmail;
                break;
                case 8:
                    sEmails[x] = sRepStuff + "9" + sGmail;
                break;
                case 9:
                    sEmails[x] = sRepStuff + "10" + sGmail;
                break;
            }
        }
    }

より良い、より簡潔なバージョンは次のようになります。

for(int i = 0; i < 10 ; i++)
{
   sEmails[i]="repstuff"+(i+1)+"@gmail.com";
}
于 2012-05-06T04:15:48.300 に答える
0

あなたの調子が良いといいのですが。

今日はコードのクリーンアップをお手伝いします!

switch-caseを実行する代わりに、これを実行できます

for(int i = 0; i < 10 ; i++)
{
   emails[i]="repstuff"+i+"@gmail.com";
}

これは、コーディングスタイルを明確にするのに役立ちます。さらに、sEmail、repStuff、Gmailの両方をインスタンス化/作成したかどうかを確認しましたか?

于 2012-05-06T04:18:22.917 に答える
0

あなたがすでに受け入れた解決策に、私はそれをさらにダイナミックにするためにいくつかの「スパイス」を追加します。ハードコードされた10を設定しませんが、代わりに配列の長さを使用します。

public void populateEmailArray()
{
    int length = sEmails.Length;

    for (int x = 0; x < length; x++)
    {

        sEmails[x] = sRepStuff + x + sGmail; 
    }
}

後でプログラムに戻る必要があり、たとえば電子メールの配列が20要素まで増加する必要がある場合に変更する必要があるすべてのポイントを覚えて確認する必要があるとき、私は自分の記憶を信用しません。

于 2012-05-06T04:35:04.587 に答える