如果我目前正在使用该方法认证的歌曲(银,金,白金),我需要显示它的认证证书,但是这并不会检查该歌曲是否确实具有认证。
然后,我还将如何显示已显示详细信息的那些歌曲的“总销售数量”和“平均销售数量”。我了解这将需要将副本出售给客户端代码,但我将如何处理。
namespace Songs
{
class Song
{
string name;
string artist;
int copiesSold;
public Song(string name, string artist, int copiesSold)
{
this.name = name;
this.artist = artist;
this.copiesSold = copiesSold;
}
public Song() : this("my_name", "my_artist", 1000)
{
}
public string GetArtist()
{
return artist;
}
public string GetDetails()
{
return $"Name: {name} Artist: {artist} Copies Sold: {copiesSold},";
}
public string GetCertification()
{
return copiesSold < 200000 ? null : copiesSold < 400000 ? "Silver" : copiesSold < 600000 ? "Gold" : "Platinum";
}
public void AddCopiesSold(int number)
{
copiesSold += number;
}
}
}
程序类
namespace Songs
{
class Program
{
static void Main(string[] args)
{
//InputSongDetails();
//Console.WriteLine(InputSongDetails());
Song[] songs = new Song[4];
for (int i = 0; i < songs.Length; i++)
{
songs[i] = InputSongDetails();
}
Console.WriteLine("Enter an artist name, or just press return for all artists");
var name = Console.ReadLine().ToUpper();
name = name.Trim();
foreach (var song in songs)
{
if (string.IsNullOrWhiteSpace(name) || song.GetArtist().Equals(name))
{
Console.WriteLine(song.GetDetails());
song.GetCertification();
}
}
}
static Song InputSongDetails()
{
Console.WriteLine("What is the name of your song");
string name = Console.ReadLine();
Console.WriteLine("What is the artists name");
string artist = Console.ReadLine();
int records;
Console.WriteLine("How many records did it sell");
while (!int.TryParse(Console.ReadLine(), out records) || records < 0)
{
Console.WriteLine("That is not valid please enter a number");
}
return new Song(name, artist, records);
}
}
}
答案 0 :(得分:0)
“如果我现在正在调用具有认证(银,金,白金)的歌曲,那么我需要显示其认证证书,但是这并不会检查歌曲是否真正具有认证。”
foreach (var song in songs)
{
if (string.IsNullOrWhiteSpace(name) || song.GetArtist().Equals(name))
{
Console.WriteLine(song.GetDetails());
song.GetCertification() != null ? song.GetCertification() : /* Handle no certificate here */;
}
}
对于您遇到的其他“问题”,您必须使结构更清晰,似乎您希望我们为您编写该功能。 Stackoverflow不是代码编写服务,但这将解决您的null错误(您将copiesSold < 200000
设置为)。
答案 1 :(得分:0)
您缺少一些代码。这应该评估传入的歌手,然后按歌手检索歌曲,并返回歌曲的唯一实例。
song.GetArtist().Equals(name)
我没有看到GetArtist()的定义,它应该以艺术家的名字作为参数(我认为)。
此外,您还从歌曲到艺术家重新定义了名称:
Console.WriteLine("What is the name of your song");
string name = Console.ReadLine();
...
Console.WriteLine("Enter an artist name, or just press return for all artists");
var name = Console.ReadLine().ToUpper();
name = name.Trim();
您应使用 unique 变量(例如artistName,songName等)来防止此类意外碰撞。