Как вы добавляете результаты цикла C # for? - PullRequest
0 голосов
/ 19 марта 2011

У меня есть программа настройки, которая запрашивает количество минут и стоимость минуты, а затем рассчитывает стоимость этого телефонного звонка.У меня есть для настройки цикла, чтобы пройти через это 3 раза.Мой вопрос: как мне отобразить общую стоимость всех трех вызовов?

Вот мой код:

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


namespace phonecall
{
    class Call
    {
        public
        int callid;  //used with counter in the main()
        int minutes;     //minutes
        double costpermin;  //output for per minute cost
        double pricepercall;    //output for total cost


        public void getdata(int x) //this method gets the data and stores it in the class data members
        {
            callid = ++x;

            Console.WriteLine("Enter the number minutes: ");
            minutes = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Enter the price per minute: ");
            costpermin = Convert.ToDouble(Console.ReadLine());
            pricepercall = minutes * costpermin;
        }

        public void displaydata() //this method displays the values of the class data members
        {

            Console.WriteLine("Call Number: {0}", callid);
            Console.WriteLine("Number of Minutes: {0}", minutes);
            Console.WriteLine("Cost Per Minute: ${0}", costpermin);
            Console.WriteLine("Total cost of Call: ${0}", pricepercall);
            Console.WriteLine();

        }
    }


    class forloop
    {
        public static void Main()
        {
            Call myCall = new Call(); //instantiation of the Call class

            for (int x = 0; x < 3; x++) //will get the data for 3 calls
            {

                myCall.getdata(x); //calls the object method and takes the value of x to use when getting data from the user
                myCall.displaydata(); //calls the object method to display the data
            }
        }
    }
}

Любая помощь будет очень признательна.

Ответы [ 3 ]

1 голос
/ 19 марта 2011

Ваш метод getData() возвращает стоимость звонка:

public double getdata(int x) //this method gets the data and stores it in the class data members
{
  callid = ++x ;
  Console.WriteLine("Enter the number minutes: ");
  minutes = Convert.ToInt32(Console.ReadLine());
  Console.WriteLine("Enter the price per minute: ");
  costpermin = Convert.ToDouble(Console.ReadLine());
  pricepercall = minutes * costpermin;
  return pricePercall; 
}

Теперь вы можете просто подвести их итог:

double sumPrices = 0;
for (int x = 0; x < 3; x++) //will get the data for 3 calls
{
   sumPrices+=myCall.getdata(x); //calls the object method and takes the value of x to use when getting data from the user
   myCall.displaydata(); //calls the object method to display the data
}
0 голосов
/ 19 марта 2011

Просто создайте переменную, которая отслеживает ваши затраты в цикле for, а затем запишите ее

double runningTotal = 0;
for (int x = 0; x < 3; x++) //will get the data for 3 calls
{
    myCall.getdata(x); //calls the object method and takes the value of x to use when getting data from the user
    runningTotal += myCall.pricepercall;
    myCall.displaydata(); //calls the object method to display the data
    Console.WriteLine("Running Total: {0}", runningTotal);
}

Или же вы можете создать объект для каждого вызова и сохранить его, а затем суммировать, когда вам понадобится текущая сумма

var callList = new List<Call>();
for (int x = 0; x < 3; x++) //will get the data for 3 calls
{
    var myCall = new Call();
    myCall.getdata(x); //calls the object method and takes the value of x to use when getting data from the user
    myCall.displaydata(); //calls the object method to display the data
    callList.Add(myCall);
}


Console.WriteLine("Running Total: ${0}", callList.Sum (c => c.pricepercall));

Очевидно, что для этого нужно, чтобы pricepercall был публичной собственностью.

Надеюсь, это поможет.

0 голосов
/ 19 марта 2011
    double costforallcalls;

    for(int i = 0; i < 3;i++)
    {
        costforallcalls += minutes * costpercall


    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...