C#控制台应用程序,用户在其中输入资源并被告知需要哪些垃圾
希望有人能帮忙。我是C#的一个非常基础的初学者。我给自己设置了创建一个控制台应用程序的任务,在其中输入我需要的资源,即拧入控制台,点击enter,它将从包含该单词的列表中检索所有垃圾,以及从垃圾中接收的资源量。所以打字机应该是两个螺丝。这是为辐射76,所以我可以看到什么垃圾包含什么资源 但我有几个问题:C#控制台应用程序,用户在其中输入资源并被告知需要哪些垃圾,c#,C#,希望有人能帮忙。我是C#的一个非常基础的初学者。我给自己设置了创建一个控制台应用程序的任务,在其中输入我需要的资源,即拧入控制台,点击enter,它将从包含该单词的列表中检索所有垃圾,以及从垃圾中接收的资源量。所以打字机应该是两个螺丝。这是为辐射76,所以我可以看到什么垃圾包含什么资源 但我有几个问题: 控制台仅返回螺钉的一个结果,即使有多个结果。(我如何解决此问题并获得多个结果?即夹板和玩具车) 我如何搜索并获得部分匹配的结果,即如果我键入scre或螺钉 有没有更好的方法来创建一个控制台应用程
using System;
using System.Collections.Generic;
class JunkList
{
public string Resource { get; set; }
public string Junk { get; set; }
public int Amount { get; set; }
public JunkList(string r, string j, int a)
{
this.Resource = r;
this.Junk = j;
this.Amount = a;
}
}
class Program
{
static void Main(string[] args)
{
string searchName;
List<JunkList> infoList = new List<JunkList>();
infoList.Add(new JunkList("Screw", "Type Writer", 2));
infoList.Add(new JunkList("Screw", "Clip Board", 1));
infoList.Add(new JunkList("Screw", "Toy Car", 3));
Console.Write("Which resource do you want to search for?? \n");
searchName = Console.ReadLine();
for (int i = 0; i < infoList.Count; i++)
{
if (string.Compare(searchName, infoList[i].Resource, true) == 0)
{
Console.Write("Resource : " + infoList[i].Resource + "\n");
Console.Write("Junk : " + infoList[i].Junk + "\n");
Console.Write("Resource Amount : " + infoList[i].Amount + "\n");
break;
}
}
Console.ReadKey();
}
}
使用系统;
使用System.Collections.Generic;
班级垃圾工
{
公共字符串资源{get;set;}
公共字符串垃圾{get;set;}
公共整数金额{get;set;}
公共垃圾列表(字符串r、字符串j、整数a)
{
这个资源=r;
这个.Junk=j;
该金额=a;
}
}
班级计划
{
静态void Main(字符串[]参数)
{
字符串搜索名称;
列表信息列表=新列表();
添加(新的垃圾清单(“螺丝”,“打字机”,2));
添加(新的垃圾清单(“螺丝”,“夹板”,1));
添加(新的垃圾清单(“螺丝”,“玩具车”,3));
Console.Write(“您要搜索哪个资源?”\n);
searchName=Console.ReadLine();
for(int i=0;i
break
语句。它取消了循环的。尝试删除它
String.Contains()
方法break
语句。它取消了循环的。尝试删除它
String.Contains()
方法if (string.Compare(searchName, infoList[i].Resource, true) == 0)
{
Console.Write("Resource : " + infoList[i].Resource + "\n");
Console.Write("Junk : " + infoList[i].Junk + "\n");
Console.Write("Resource Amount : " + infoList[i].Amount + "\n");
break; // REMOVE THIS LINE
}
break
意味着您正在退出for
循环,因此一旦找到结果,您实际上正在退出
如何搜索和获取部分匹配的结果,即如果键入scre
还是螺丝钉
如果条件从
if (string.Compare(searchName, infoList[i].Resource, true) == 0)
差不多
if (infoList[i].Resource.ToLowerInvariant().Contains(searchName.ToLowerInvariant()))
这将检查插入的字符串是否包含在列表中的某个字符串中。ToLowerInvariant
用于使搜索不区分大小写
当然,这不是一个模糊的搜索,因此搜索螺钉不会产生任何结果。进行模糊搜索稍微复杂一点,可能超出了这个问题的范围
有没有更好的方法来创建控制台应用程序
存储值,然后用户搜索这些值?我找不到
任何接近我需要的东西都可以搜索互联网
基于观点的问题并不适用于StackOverflow,而询问更好的方法来做某事就是其中之一。我想你不会得到答案的
控制台仅为螺钉返回一个结果,即使有
多重结果。(我如何解决此问题并收到多个结果?
i、 (夹板和玩具车)
您的问题是,在找到第一个结果后,您正在崩溃:
if (string.Compare(searchName, infoList[i].Resource, true) == 0)
{
Console.Write("Resource : " + infoList[i].Resource + "\n");
Console.Write("Junk : " + infoList[i].Junk + "\n");
Console.Write("Resource Amount : " + infoList[i].Amount + "\n");
break; // REMOVE THIS LINE
}
break
意味着您正在退出for
循环,因此一旦找到结果,您实际上正在退出
如何搜索和获取部分匹配的结果,即如果键入scre
还是螺丝钉
如果
条件从
if (string.Compare(searchName, infoList[i].Resource, true) == 0)
差不多
if (infoList[i].Resource.ToLowerInvariant().Contains(searchName.ToLowerInvariant()))
这将检查插入的字符串是否包含在列表中的某个字符串中。ToLowerInvariant
用于使搜索不区分大小写
当然,这不是一个模糊的搜索,因此搜索螺钉不会产生任何结果。进行模糊搜索稍微复杂一点,可能超出了这个问题的范围
有没有更好的方法来创建控制台应用程序
存储值,然后用户搜索这些值?我找不到
任何接近我需要的东西都可以搜索互联网
基于观点的问题并不适用于StackOverflow,而询问更好的方法来做某事就是其中之一。我认为你不会得到这个问题的答案。为了减少主观因素,我将把你的最后一个问题解释为“是否有一种通用的软件模式或方法用于存储可以轻松搜索的数据对象?”
在这方面,您将描述数据库真正擅长的特性和功能,特别是存储一些数据表,并提供一种使用您定义的条件快速搜索(查询)数据的方法
C#和.NET框架提供了一些非常深入和强大的工具,用于利用数据库和管理数据类之间的映射,如JunkList