2017-10-20 53 views
0

tous. Programmeur étudiant ici, plus qu'un noob mais luttant avec des tableaux. J'ai fait un devoir que j'ai retourné pour la moitié des points il y a quelques semaines parce que je n'arrivais pas à faire fonctionner les baies parallèles. On nous a demandé de créer une interface graphique pour calculer le coût d'un appel téléphonique pour six indicatifs régionaux différents. L'interface graphique vous demande un indicatif régional (vous obtenez une liste de codes valides à saisir) et la durée de l'appel. Je pense que mon problème est de faire en sorte que le programme passe en boucle dans le tableau des codes de zone, mais je suis totalement déconcerté par rapport à l'endroit où aller. (Je parie aussi que je vais faire facepalm quand je vois ce que la réponse pourrait être.) Voici mon code pour le bouton GUI. Il renvoie un coût de 1,40 $, peu importe l'indicatif régional que j'entre. Merci d'avoir regardé!C# - Utilisez des tableaux parallèles pour calculer le coût d'un appel téléphonique dans 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

Si vous avez besoin du résultat d'un seul indicatif régional, pourquoi utilisez-vous les codes de zone? – progrAmmar

+0

Vous devez trouver l'index de 'inputAC' dans le tableau' areaCode'. –

+0

@progrAmmar, super point. Je vois maintenant comment j'ai mal exprimé ma question. Je veux dire que j'avais des problèmes pour indexer le tableau de codes de zone. –

Répondre

0

Essayez cette

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 
    } 
} 

Sinon, si vous donne une mission où vous devez montrer comment sortir d'une boucle tout ce que vous avez besoin dans votre code actuel est un ajout d'une condition

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

Merci. Ajouté la condition/pause à mon code actuel et cela a fonctionné. Travailler maintenant sur les combos de message d'erreur, car cela semble une excellente façon de pratiquer TryParse, etc. –