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

数组从 0 开始索引,而不是 1,因此您没有给出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

希望你一切顺利。

今天我会帮你清理你的代码!

而不是做一个开关盒,你可以这样做

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 回答