如何比较数组中的数字
How to compare numbers in an array
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiceGame
{
class Program
{
static void Main(string[] args)
{
Random randomnumber = new Random();
int[] Player = new int[5];
Player[0] = randomnumber.Next(1, 6);
Player[1] = randomnumber.Next(1, 6);
Player[2] = randomnumber.Next(1, 6);
Player[3] = randomnumber.Next(1, 6);
Player[4] = randomnumber.Next(1, 6);
Console.WriteLine("You rolled a " + Player[0] + " " + Player[1] + " " + Player[2] + " " + Player[3] + " " + Player[4]);
Console.WriteLine(" You have a " + however many are equal);
}
}
}
编辑:我需要比较数组中的多个数字。他们随机 1-6,如果 2 彼此相等,我需要显示对。若3相等则显示三一,若4四一5,一五
edit2:我唯一能找到的就是这个,但它只比较了 Player[0] 和数组的其余部分
for (int i = 0; i < Player.Length; i++)
{
int count = 0;
for (int j = 0; j < Player.Length; j++)
{
if (Player[i] == Player[j])
count = count + 1;
}
Console.WriteLine("\t\n " + Player[i] + " occurs " + count);
Console.ReadKey();
您可以使用 foreach
循环按常规编写:
int theSame = 0;
foreach (var x in Player)
{
int localTheSame = 0;
foreach (var y in Player)
{
if (x == y)
{
localTheSame++;
}
}
if (localTheSame > theSame)
{
theSame = localTheSame;
}
}
我在你的 edit2 之前写了这个答案,所以我认为你想要显示任意数字的最大出现次数。
编辑
使用 LINQ 的相同解决方案:
int theSame = Player.Max(x => Player.Count(y => x == y));
您可以使用 LINQ 来计算每个数字。
Random randomnumber = new Random();
int[] Player = new int[5];
Player[0] = randomnumber.Next(1, 6);
Player[1] = randomnumber.Next(1, 6);
Player[2] = randomnumber.Next(1, 6);
Player[3] = randomnumber.Next(1, 6);
Player[4] = randomnumber.Next(1, 6);
Console.WriteLine("You rolled a " + Player[0] + " " + Player[1] + " " + Player[2] + " " + Player[3] + " " + Player[4]);
var selected = from x in Player.AsEnumerable()
group x by x into g
select new { Digit = g.Key, DigitCount = g.Count()};
foreach(var sel in selected)
{
Console.WriteLine("You have rolled " + sel.Digit + " no of times " + sel.DigitCount);
}
你可以这么简单:
foreach (var p in Player.GroupBy(x => x).Select(x => new { Player = x.Key, Count = x.Count()}))
Console.WriteLine("Player {0} occurs {1} time{2}", p.Player, p.Count, p.Count == 1 ? "s" : "");
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DiceGame
{
class Program
{
static void Main(string[] args)
{
Random randomnumber = new Random();
int[] Player = new int[5];
Player[0] = randomnumber.Next(1, 6);
Player[1] = randomnumber.Next(1, 6);
Player[2] = randomnumber.Next(1, 6);
Player[3] = randomnumber.Next(1, 6);
Player[4] = randomnumber.Next(1, 6);
Console.WriteLine("You rolled a " + Player[0] + " " + Player[1] + " " + Player[2] + " " + Player[3] + " " + Player[4]);
Console.WriteLine(" You have a " + however many are equal);
}
}
}
编辑:我需要比较数组中的多个数字。他们随机 1-6,如果 2 彼此相等,我需要显示对。若3相等则显示三一,若4四一5,一五
edit2:我唯一能找到的就是这个,但它只比较了 Player[0] 和数组的其余部分
for (int i = 0; i < Player.Length; i++)
{
int count = 0;
for (int j = 0; j < Player.Length; j++)
{
if (Player[i] == Player[j])
count = count + 1;
}
Console.WriteLine("\t\n " + Player[i] + " occurs " + count);
Console.ReadKey();
您可以使用 foreach
循环按常规编写:
int theSame = 0;
foreach (var x in Player)
{
int localTheSame = 0;
foreach (var y in Player)
{
if (x == y)
{
localTheSame++;
}
}
if (localTheSame > theSame)
{
theSame = localTheSame;
}
}
我在你的 edit2 之前写了这个答案,所以我认为你想要显示任意数字的最大出现次数。
编辑
使用 LINQ 的相同解决方案:
int theSame = Player.Max(x => Player.Count(y => x == y));
您可以使用 LINQ 来计算每个数字。
Random randomnumber = new Random();
int[] Player = new int[5];
Player[0] = randomnumber.Next(1, 6);
Player[1] = randomnumber.Next(1, 6);
Player[2] = randomnumber.Next(1, 6);
Player[3] = randomnumber.Next(1, 6);
Player[4] = randomnumber.Next(1, 6);
Console.WriteLine("You rolled a " + Player[0] + " " + Player[1] + " " + Player[2] + " " + Player[3] + " " + Player[4]);
var selected = from x in Player.AsEnumerable()
group x by x into g
select new { Digit = g.Key, DigitCount = g.Count()};
foreach(var sel in selected)
{
Console.WriteLine("You have rolled " + sel.Digit + " no of times " + sel.DigitCount);
}
你可以这么简单:
foreach (var p in Player.GroupBy(x => x).Select(x => new { Player = x.Key, Count = x.Count()}))
Console.WriteLine("Player {0} occurs {1} time{2}", p.Player, p.Count, p.Count == 1 ? "s" : "");