2016-10-14 38 views
0
static void getGrades() 
    { 
     Console.WriteLine("How many grade level classes are you taking?"); 
     int standardNumber = int.Parse(Console.ReadLine()); 
     Console.WriteLine(); 
     Console.WriteLine("How many honors level classes are you taking?"); 
     int honorsNumber = int.Parse(Console.ReadLine()); 
     Console.WriteLine(); 
     Console.WriteLine("How many AP level classes are you taking?"); 
     int apNumber = int.Parse(Console.ReadLine()); 
     Console.WriteLine(); 
     Console.WriteLine("Enter your letter grades when prompted."); 
     Console.WriteLine("======================================="); 
     for (int a = 1; a == standardNumber; a++) 
     { 
      int num = 1; 
      Console.WriteLine("Enter letter grade for honors class {0}:", num); 
      switch (num) 
      { 
       case 1: 
        string class1 = Console.ReadLine(); 
        break; 
       case 2: 
        string class2 = Console.ReadLine(); 
        break; 
       case 3: 
        string class3 = Console.ReadLine(); 
        break; 
       case 4: 
        string class4 = Console.ReadLine(); 
        break; 
       default: 
        break; 
      } 


      Console.WriteLine(); 

     } 
    } 

我試圖調用此方法來收集4個類的混合中的類和級別字母的數量。當我調用方法時,第一部分(下面)執行正常。未運行方法的一部分

Console.WriteLine("How many grade level classes are you taking?"); 
    int standardNumber = int.Parse(Console.ReadLine()); 
    Console.WriteLine(); 
    Console.WriteLine("How many honors level classes are you taking?"); 
    int honorsNumber = int.Parse(Console.ReadLine()); 
    Console.WriteLine(); 
    Console.WriteLine("How many AP level classes are you taking?"); 
    int apNumber = int.Parse(Console.ReadLine()); 

但是,其餘的代碼(下面)不執行。

Console.WriteLine(); 
    Console.WriteLine("Enter your letter grades when prompted."); 
    Console.WriteLine("======================================="); 
    for (int a = 1; a == standardNumber; a++) 
    { 
     int num = 1; 
     Console.WriteLine("Enter letter grade for honors class {0}:", num); 
     switch (num) 
     { 
      case 1: 
       string class1 = Console.ReadLine(); 
       break; 
      case 2: 
       string class2 = Console.ReadLine(); 
       break; 
      case 3: 
       string class3 = Console.ReadLine(); 
       break; 
      case 4: 
       string class4 = Console.ReadLine(); 
       break; 
      default: 
       break; 
     } 


     Console.WriteLine(); 

    } 
} 

有誰知道爲什麼會發生這種情況。在此先感謝

+0

你想在這裏做什麼? – Sajeetharan

+0

我正在嘗試獲取每種類型的課程(例如2個榮譽課程和2個課程課程),然後使用循環從該課程的許多課程中獲得信件成績。 – zstaylor

+1

檢查答案 – Sajeetharan

回答

0

你的方法包含在連續兩行:

int apNumber = int.Parse(Console.ReadLine()); 
Console.WriteLine(); 

有兩種方法可以執行第一行,但第二行不可以:

  • 方法調用Console.ReadLine()從不返回,因爲用戶從不按下「enter」。
  • 方法Console.ReadLine或方法int.Parse引發異常。

我的猜測是int.Parse引發異常。


更理論回答:

如果我沒有記錯的話,當我引用運行,以下的一個代碼必須發生,總是,無論什麼:

  • 第一行繼續執行。
  • 第一行引發異常。
  • 線程在執行第二行之前終止。
  • 第一行返回,第二行執行。

如果最後一件事情沒有發生,其他事情之一必須發生。

1

按照你的邏輯,如果你輸入的輸入standardNumber爲1只它將運行這些線,

for (int a = 1; a == standardNumber; a++) 
{ 
    int num = 1;  
} 

順便說一句,你不需要一個循環爲。

編輯:

您需要輸入存儲在一個集合中,做一個環上

static void Main(string[] args) 
     { 
      List<int> inputs = new List<int>(); 
      Console.WriteLine("How many grade level classes are you taking?"); 
      int standardNumber = int.Parse(Console.ReadLine()); 
      inputs.Add(standardNumber); 
      Console.WriteLine(); 
      Console.WriteLine("How many honors level classes are you taking?"); 
      int honorsNumber = int.Parse(Console.ReadLine()); 
      inputs.Add(honorsNumber); 
      Console.WriteLine(); 
      Console.WriteLine("How many AP level classes are you taking?"); 
      int apNumber = int.Parse(Console.ReadLine()); 
      inputs.Add(apNumber); 
      Console.WriteLine(); 
      Console.WriteLine("Enter your letter grades when prompted."); 
      Console.WriteLine("======================================="); 
      for (int i = 0; i < inputs.Count; i++) 
      {     
       Console.WriteLine("Enter letter grade for honors class {0}:", inputs[i]); 
       switch (i) 
       { 
        case 1: 
         string class1 = Console.ReadLine(); 
         break; 
        case 2: 
         string class2 = Console.ReadLine(); 
         break; 
        case 3: 
         string class3 = Console.ReadLine(); 
         break; 
        case 4: 
         string class4 = Console.ReadLine(); 
         break; 
        default: 
         break; 
       } 
       Console.WriteLine(); 
      } 
      Console.Read(); 
     }