如何将运行总数/计数器添加到C#控制台应用程序

问题描述:

我的应用程序将用户输入(保龄球分数)并将其平均值。我接触到的问题是允许用户随时停止的要求。我放置了10个int变量,并假设一个不会超过10的计算。我的问题是,如何保持总计/计数,以便如果用户只输入2个平均值,那么我只能除以2?谢谢你的帮助。如何将运行总数/计数器添加到C#控制台应用程序

Console.WriteLine("Please input the score of game 1: "); 
g1 = ReadLine(); 
game1 = int.Parse(g1); 
Console.WriteLine("Would you like to add more scores? Press 'n' to continue to averaging, press any other key to continue!"); 
playagain = ReadLine(); 
if(playagain =="n") 
{ 
    calculating(); 
} 
Console.Clear(); 

这就是我编写程序的过程。我是否创建了一个变量,并在while语句中指定自己,以声明是否有其他按钮被按下(程序继续到游戏2的另一个用户输入),向变量添加1?

+0

您可以使用'List',然后除以Count。 – mrogers

+0

使用一个集合('List ')来保留任意数量的输入 – maccettura

int count = 0; 
while(playagain != "n") 
{ 
    Console.WriteLine("Please input the score of game 1: "); 
    g1 = ReadLine(); 
    game1 += int.Parse(g1); 
    count++; 
    Console.WriteLine("Would you like to add more scores? Press 'n' to continue to averaging, press any other key to continue!"); 
    playagain = ReadLine();   
    Console.Clear(); 
} 

count变量将保持输入数量上的运行总数,并且game1变量将继续增加分数。

UPDATE for question asked;

class OtherClass{ 
    public int Counter {set; get;} 
    . 
    .//other logic 
    . 
} 
OtherClass otherClass = new OtherClass(); 
int count = 0; 
while(playagain != "n") 
{ 
    Console.WriteLine("Please input the score of game 1: "); 
    g1 = ReadLine(); 
    game1 += int.Parse(g1); 
    count++; 
    Console.WriteLine("Would you like to add more scores? Press 'n' to continue to averaging, press any other key to continue!"); 
    playagain = ReadLine();   
    Console.Clear(); 
} 
otherClass.Counter = count; 
+0

我曾经使用过这种方法,但是打算调用另一个类中的所有变量AND计数器来计算总数。我的问题是,其他班级将计数器值视为0,因为它是在班级之前分配的。有任何解决这个问题的方法吗? –

+0

@TobyZ查看我刚添加的更新。 – Lavevel

使用List<int>集合来存储的得分,然后要么

1)名单的计数财产分割的总和列表和分裂的价值观:

var scores = new List<int>(); 
int total = 0; 

foreach(var score in scores) 
{ 
    total += score; 
} 

var average = total/scores.Count; 

2)使用LINQ的.Average()方法快速获得列表中所有值的平均值:

var scores = new List<int>(); 
var average = scores.Average(); 

自然使用所需的任何数据类型或转换来获得您所需要的精度级别。

+1

LINQ的使用更清洁 – Kokombads

+0

@Kokombads绝对,但不是每个人都知道如何使用它,所以我包括了替代方案。 – MattD

您可以推入列表并使用Sum()和Average()扩展。要保持aceepting分数,您可以使用while循环

Console.WriteLine("Please input the score of game 1: "); 
    List<int> scores = new List<int>(); 
    int game1 = int.Parse(Console.ReadLine()); 
    scores.Add(game1); 
    Console.WriteLine("Would you like to add more scores? Press 'n' to continue to averaging, press any other key to continue!"); 
    string playagain = Console.ReadLine(); 
    while(playagain != "n") 
    { 
     Console.WriteLine("Please input the score of next game: "); 
     scores.Add(int.Parse(Console.ReadLine())); 
     Console.WriteLine("Would you like to add more scores? Press 'n' to continue to averaging, press any other key to continue!"); 
     playagain = Console.ReadLine(); 
    } 
    Console.WriteLine("Total is " + scores.Sum()); 
    Console.WriteLine("Average is " + scores.Average()); 
    Console.Clear();