1

こんにちは私は成績計算に取り組んでいます。ここでの問題は、文字列配列の長さが int 配列よりも長い場合、最後の 2 学年をスキップして機能することです。元:

int[] unit = new int[] {1,-3,3,4};
string[] letter_grade = new string[] {"A", "B","B","W","D","F"};

ただし、文字列配列の長さよりも長い int 配列の長さが機能しない場合、エラーがスローされ、インデックスが配列の境界外にありました。

int[] unit = new int[] {1,-3,3,4,5,6,7};
string[] letter_grade = new string[] {"A", "B","B"};

私の質問は、どうすれば両方で機能させることができますか??

int length = unit.Length;
int no_units = length;
double totalGrade_Points = 0.0;
int totalno_units = 0;
totalGPA = 0;

for (int i = 0; i < unit.Length; i++)
{
  entrygot = findGpaListentry(letter_grade[i]); //Index was outside the bounds of the array.
  if (entrygot != null)
  {
     //some code calculation
  }
}
4

4 に答える 4

0

foreachloop はシーンに最適です。

    foreach (string s in letter_grade)
    {
      entrygot = findGpaListentry(s); 
      if (entrygot != null)
      {
         //some code calculation
      }
}
于 2012-08-08T10:23:54.633 に答える
0

配列の範囲外になり、null チェックが発生する前に例外が発生するため、配列項目が null であるかどうかを確認することはできません。

反復ごとに配列の長さを確認します...

for (int i = 0; i < unit.Length; i++)
{
    if (currentArray.Length < i - 1) { break; }
    // other code...
}
于 2012-08-07T22:56:26.327 に答える
0

あなたの場合、要素の数は決して大きくならないので、パフォーマンスは問題にならないと思います。したがって、配列の代わりにリストを使用する必要があると思います。配列を使用すると、いくつかのロジックが変更されたり、他の機能が追加されたりするたびにチェックを挿入する必要があります。

于 2012-08-08T10:19:07.540 に答える