我在学校有一个任务,说我应该创建一个类似于背包的程序,我应该使用数组和列表。
背包的功能是能够将4个物体放入较小的隔间(ytterfack
),然后将无限量的物体放入大隔间(stora facket
)。
我希望它可以使用一个菜单,用户可以将一个项目放入(ytterfack
),如果用户想要,切换到(stora fack
)并放置一个项目到那一个。也就是说,我试图避免为(ytterfack
)设置for循环,这意味着用户可以选择puttin 4对象进入(ytterfack
)。
有没有办法创建一个数组,让用户一次将这些元素放在一个中,甚至在它满了时收到一条消息?
class Program
{
static void Main(string[] args)
{
Console.WriteLine("\tVälkommen till Ryggsäcken!!\n");
Console.WriteLine("\t[1] Lägg till ett föremål i det stora facket");
Console.WriteLine("\t[2] Lägg till ett föremål i ytterfacket");
Console.WriteLine("\t[3] Skriv ut innehållet i stora facket");
Console.WriteLine("\t[4] Skriv ut innehållet i ytterfacket");
Console.WriteLine("\t[5] Rensa innehållet i stora facket");
Console.WriteLine("\t[6] Rensa innehållet i ytterfacket");
Console.WriteLine("\t[7] Avsluta\n");
string[] ytterFack = new string[4];
List<string> storaFacket = new List<string> { };
int i = 0;
bool kör = true;
do
{
Console.Write("\n\tVälj punkt från menyn: ");
int menyVal = Convert.ToInt32(Console.ReadLine());
switch (menyVal)
{
case 1:
Console.Write("\n\tSkriv in ett föremål: ");
storaFacket.Add(Console.ReadLine());
//Console.WriteLine("\n\tDu har lagt in " + + " Tack!\n");
break;
case 2:
Console.Write("\n\tSkriv in ett föremål: ");
ytterFack[i] = Console.ReadLine();
//Console.WriteLine("\n\tDu har lagt in " + ytterFack[i] + " Tack!\n");
break;
case 3:
Console.WriteLine("\tInnehållet i stora facket är:");
foreach (string item in storaFacket)
{
Console.WriteLine("\t" + item);
}
break;
case 4:
Console.WriteLine("\tInnehållet i ytterfacket är:");
foreach (string item in ytterFack)
{
Console.WriteLine("\t" + item);
}
break;
case 5:
storaFacket.Clear();
Console.WriteLine("\tNu är stora facket tömt!\n");
break;
case 6:
Array.Clear(ytterFack, 0, ytterFack.Length);
Console.WriteLine("\tNu är ytterfacket tömt!\n");
break;
case 7:
kör = false;
break;
default:
break;
}
}
while (kör);
}
}
答案 0 :(得分:0)
好的,这就是它的成就。
我很欣赏一两条关于它的评论,我能做得更好或更容易做些什么?
void OnTriggerEnter(Collider other){
if(other.gameobject.tag == "Player")
//do something
}
答案 1 :(得分:0)
而不是在Main()
中执行所有操作,首先将BackPack
建模为单独的类 - 这样您就可以一致地实现和应用约束(如最多4项),即使您使用的是两者List<string>
:
public class BackPack
{
private List<string> ytterFacket = new List<string>();
public List<string> YtterFacket
{
get {
return ytterFacket;
}
}
private List<string> storaFacket = new List<string>();
public List<string> StoraFacket
{
get {
return storaFacket;
}
}
public string PutIntoYtterFacket(string item)
{
if (ytterFacket.Count < 4)
{
ytterFacket.Add(item);
return string.Format("Du har lagt in {0}! Tack!", item);
}
return string.Format("Kan inte lägge till {0}, gräns nådd", item);
}
public string PutIntoStoraFacket(string item)
{
storaFacket.Add(item);
return string.Format("Du har lagt in {0}! Tack!", item);
}
public string ClearYtterFacket()
{
ytterFacket.Clear();
return "Nu är ytterfacket tömt!";
}
public string ClearStoraFacket()
{
storaFacket.Clear();
return "Nu är storafacket tömt!";
}
}
因此,添加到ytterFacket
的情况变为(假设fjallraven
是BackPack
类的实例):
Console.Write("\n\tSkriv in ett föremål: ");
fjallraven.PutIntoYtterFacket(Console.ReadLine());
您不必在case
块中执行错误处理,BackPack
实例将为您执行此操作! (抱歉错误字符串,我的瑞典语有点生疏)