2017-10-20 60 views
0

全部。這裏的學生程序員不僅僅是一個noob,而是與陣列掙扎。我有一個家庭作業,幾個星期前我已經交出了一半的積分,因爲我無法使平行陣列工作。我們被要求創建一個GUI來計算六個不同區號的電話費用。圖形用戶界面要求輸入區號(您將獲得要輸入的有效代碼列表)以及通話的長度。我認爲我的問題在於讓程序循環遍歷區號陣列,但我完全被困在了從這裏開始的地方。 (我也打賭,當我看到答案時,我會去facepalm。)這是我的GUI按鈕代碼。不管我輸入什麼區號,它都會返回1.40美元的成本。感謝您的期待!C# - 使用並行陣列來計算GUI中的電話費用

private void calcButton_Click(object sender, EventArgs e) 
    { 
     int[] areaCode = { 262, 414, 608, 715, 815, 902 }; 
     double[] rates = { 0.07, 0.10, 0.05, 0.16, 0.24, 0.14 }; 
     int inputAC; 
     double total = 0; 

     for (int x = 0; x < areaCode.Length; ++x) 
     { 

      inputAC = Convert.ToInt32(areaCodeTextBox.Text); 

      total = Convert.ToInt32(callTimeTextBox.Text) * rates[x]; 
      costResultsLabel.Text = "Your " + callTimeTextBox.Text + "-minute call to area code " + areaCodeTextBox.Text + " will cost " + total.ToString("C"); 


     } 
    } 
+0

如果你需要一個區號的結果你爲什麼要在區號上循環? – progrAmmar

+0

您需要在'areaCode'數組中找到'inputAC'的索引。 –

+0

@progrAmmar,很棒的一點。我現在看到我錯誤地表達了我的問題。我的意思是說我在索引區域碼數組時遇到了麻煩。 –

回答

0

試試這個

private void calcButton_Click(object sender, EventArgs e) 
{ 
    int[] areaCode = { 262, 414, 608, 715, 815, 902 }; 
    double[] rates = { 0.07, 0.10, 0.05, 0.16, 0.24, 0.14 }; 
    if(!string.IsNullOrEmpty(areaCodeTextBox.Text)) 
    { 
     double total = 0; 
     if(!string.IsNullOrEmpty(callTimeTextBox.Text)) 
     { 
      int index = Array.IndexOf(areaCode, int.Parse(areaCodeTextBox.Text)); //You can use TryParse to catch for invalid input 
      if(index > 0) 
      { 
       total = Convert.ToInt32(callTimeTextBox.Text) * rates[index]; 
       costResultsLabel.Text = "Your " + callTimeTextBox.Text + "-minute call to area code " + areaCodeTextBox.Text + " will cost " + total.ToString("C"); 
      } 
      else 
      { 
       //Message Area code not found 
      } 
     } 
     else 
     { 
      //Message Call time is empty 
     } 
    } 
    else 
    { 
     //Message Area Code is empty 
    } 
} 

或者,如果你給,你必須展示如何跳出循環的,那麼所有你在當前的代碼需要的是增加了一個條件的轉讓

private void calcButton_Click(object sender, EventArgs e) 
{ 
    int[] areaCode = { 262, 414, 608, 715, 815, 902 }; 
    double[] rates = { 0.07, 0.10, 0.05, 0.16, 0.24, 0.14 }; 
    int inputAC; 
    double total = 0; 

    for (int x = 0; x < areaCode.Length; ++x) 
    {  
     inputAC = Convert.ToInt32(areaCodeTextBox.Text); 
     total = Convert.ToInt32(callTimeTextBox.Text) * rates[x]; 

     if(inputAC == areaCode[x]) //ADDED condition 
      break; 
    } 
    costResultsLabel.Text = "Your " + callTimeTextBox.Text + "-minute call to area code " + areaCodeTextBox.Text + " will cost " + total.ToString("C"); 
} 
+0

謝謝。添加條件/中斷到我當前的代碼,它的工作。現在正在處理錯誤消息組合,因爲這似乎是一種練習TryParse等的好方法。 –