2014-03-13 49 views
0

在這裏,當我分別將學生的四個科目的平均數1加起來,就像我繼續學生時一樣,他的平均數正在與學生1相加。爲什麼每個學生的單獨平均數不計算?請幫忙。馬克名單的學生髮現平均

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication3 
{ 
    class stud 
    { 
     static void Main (string[] args) 
     { 
      double[,] studentavg = new double[3, 4]; 
      double total = 0; 
      int ch = 0; 
      int i, j; 

      while (ch == 0) 
      { 
       for (i = 0; i < studentavg.GetLength(0); i++) 
       { 
        Console.WriteLine("Enter mark of student : {0}", i + 1); 

        for (j = 0; j < studentavg.GetLength(1); j++) 
        { 
         Console.WriteLine("Enter mark : {0}", j + 1); 
         studentavg[i, j] = Convert.ToDouble(Console.ReadLine()); 
         total += studentavg[i, j]; 
        } 
        Console.WriteLine("Average is: {0}", (total/studentavg.GetLength(1))); 
        Console.Write("Enter 1 for exit OR 0 for continue: "); 
        ch = Convert.ToInt16(Console.ReadLine()); 
       } 
      } 
      Console.ReadLine(); 
     } 
    } 
} 
+4

我確信有人會在幾分鐘內指出問題。與此同時,只需使用調試器並逐行執行代碼,並注意'total'變量的值。 – Dirk

+0

謝謝德克和克里斯 – user3410213

回答

0

您放置的行 「雙總= 0;」 while循環之外。 你不需要每次都將它初始化爲零嗎?

你也應該避免 「Convert.ToInt16」 和 替換爲 「如果(!int.TryParse(到Console.ReadLine(),出通道)){錯誤,請重新輸入號碼}其他一切ok」 儘量避免預定義的整數大小。從字符串到數字的轉換總是會失敗。

0

你永遠不會將total重置爲0之間的學生。嘗試添加

total = 0 

ch = Convert.ToInt16(Console.ReadLine()); 
+0

現在我明白了理查德。 – user3410213

+0

沒有問題@ user3410213 – Dutts