1

一連のコンマ区切りのペアで構成されるstrという配列があります。たとえば、str [0]は「Bill、John」です。strをループして、コンマの各ペアをFirstとSecondという配列に分割しようとしています。私はこれを達成するのに苦労しています、誰かが助けてくれるなら私はそれを大いに感謝します。これは私が使用している私のコードです:

while (a < length)
{
    var Pairs = str[a].Split(',');
    Console.WriteLine(a + ": " + str[a]);
    first[a] = Pairs[0];
    second[a] = Pairs[1];
    a++;
}

私が抱えている問題は、最初の[a]行と2番目の[a]行にあります。これらの変数がどのデータ型であるかを理解するのに問題があります。whileループの前と同じように、宣言した型ごとに異なるエラーが発生するようです。

ループ内の変数の実装で発生するエラーは次のとおりです
。配列として宣言した場合:「[]を使用したインデックスを'System.Array'型の式に適用できません」

Array first;
Array second;
while (a < length)
{
    var Pairs = str[a].Split(',');
    Console.WriteLine(a + ": " + str[a]);
    first[a] = Pairs[0];
    second[a] = Pairs[1];
    a++;
}

as ints:"タイプ'int'の式に[]を使用したインデックス付けを適用することはできません"

int first;
int second;
while (a < length)
{
    var Pairs = str[a].Split(',');
    Console.WriteLine(a + ": " + str[a]);
    first[a] = Pairs[0];
    second[a] = Pairs[1];
    a++;
}

文字列として:「プロパティまたはインデクサ'string.this[int]'を割り当てることはできません-読み取り専用です」

string first;
string second;
while (a < length)
{
    var Pairs = str[a].Split(',');
    Console.WriteLine(a + ": " + str[a]);
    first[a] = Pairs[0];
    second[a] = Pairs[1];
    a++;
}

as vars: "暗黙的に型指定されたローカル変数を初期化する必要があります"(このエラーは宣言にあり、ループ自体ではありません。初期化すると、暗黙的に上記のデータ型の1つに変換され、それらに関連するエラーがスローされます私が言及した)

var first;
var second;
while (a < length)
{
    var Pairs = str[a].Split(',');
    Console.WriteLine(a + ": " + str[a]);
    first[a] = Pairs[0];
    second[a] = Pairs[1];
    a++;
}
4

2 に答える 2

3

新しい編集に基づく:

わかりました。配列型は使用されません。それは内部です。配列を使用するには、角かっこ表記を使用する必要があります(奇妙に思えますが、これはC、C ++、およびJavaからのものです)。

これは次のようになります。

string [10] first;

ただし、最新のC#では、ジェネリックを使用できます。それらは、現代のオブジェクト指向の世界ではより意味があります。それらを使用するには、それらが操作するタイプを指定します。多くの点で、アレイが機能することを期待するように動作しますが、機能が追加されています。それらを使用するには、あなたの例では、次のようになります。

ArrayList<string> first = new ArrayList<string>();
ArrayList<string> second = new ArrayList<string>();

foreach(string a in str)
{
    var Pairs = a.Split(',');
    first.Add(Pairs[0]);
    second.Add(Pairs[1]);
}

C#でこれを行う簡単な方法は、foreachループを使用することです。

int index = 0;

foreach(string a in str)
{
    var Pairs = a.Split(',');
    first[index] = Pairs[0];
    second[index] = Pairs[1];
    index++;
}

ただし、長さがどこから来ているのかわからない場合を除いて、コードは機能する可能性があります。たぶんあなたのコードはこのようにすべきですか?

int a = 0;
while (a < str.Length)
{
    var Pairs = str[a].Split(',');
    Console.WriteLine(a + ": " + str[a]);
    first[a] = Pairs[0];
    second[a] = Pairs[1];
    a++;
}
于 2013-03-26T04:26:14.003 に答える
0

これを試してみてください

string[] str = new string[1];

        str[0] = "Bill,John";

        string[] first = new string[1];
        string[] second = new string[1];
        string[] pairs = new string[1];

        int a = 0;
        while(a<str.Length)
        {
            pairs = str[a].Split(',');
            first[a] = pairs[0];
            second[a] = pairs[1];
            Console.WriteLine(first[a] + " - " + second[a]);
            a++;
        }

        int i = 0;
        foreach (string item in str)
        {
            pairs = item.Split(',');
            int k = pairs.Count();
            first[i] = pairs[0];
            second[i] = pairs[1];
            Console.WriteLine(first[i] + " - " + second[i]);
            i++;
        }
于 2013-03-26T06:01:49.530 に答える