我现在正在做一个关于解决魔方问题的项目。我想创建一个数组来记住这样的步骤:
char[] Steps = new char[200];
每次我执行'F','B','R','L','U','D'转弯方法时,它会添加'F','B','R',数组中的'L','U','D'字符。 但是当我想得到步长时,它总是显示200。
例如:
char[] steps = new char[5];
现在我已经添加了3个步骤:
steps[] = {'f','b','f','',''};
如何获得长度'3'?
或者我可以使用任何替代方法,我不需要在开头设置长度?
答案 0 :(得分:3)
您可以使用List<char>
但如果您的情景中的表现非常重要,您可以初始化初始容量
类似于以下内容
List<char> list = new List<char>(200);
list.Add('c');
list.Add('b');
这里count会返回你真正添加的内容
var c = list.Count;
注意在列表中,您可以应用Linq Count()
或仅使用Count
属性,该属性不需要像Linq
那样计算并立即返回结果
答案 1 :(得分:2)
您将收到此行的编译错误
steps[] = {'f','b','f','',''};
由于你不能使用空字符,你需要编写步骤而不是步骤[]。 我建议您使用字符串数组,并使用LINQ以这种方式获取非空元素的计数:
string [] steps = {"f","b","f","",""};
Console.WriteLine(steps.Where(x=>!string.IsNullOrEmpty(x)).Count());
答案 2 :(得分:0)
使用System.Linq
计算非空项:
steps.Count(x => x != '\0');
您的代码无法编译,因为''
不允许char
,但我假设您的意思是char
中的空元素实际由'\0'
或Unicode Null表示的数组。因此,上述条件只计算数组中的非null项。
答案 3 :(得分:0)
你可以使用一个字符列表来简化这个事情:
import requests
from bs4 import BeautifulSoup
page = requests.get("http://www.queensbronxba.com/directory/")
soup = BeautifulSoup(page.content, 'html.parser')
company = soup.find(class_="boardMemberWrap")
contact = company.findAll(class_="boardMemberInfo")
info = contact[0]
print(info.prettify())
name_tags = company.select("h4")
names = [nt.get_text() for nt in name_tags]
print(names)
for name in company.findAll(class_="boardMember"):
for n in name.findAll('p')[:1]:
print(n.text)
phone_tags = company.select('a[href^="tel"]')
phones = [pt.get_text() for pt in phone_tags]
print(phones)
email_tags = company.select('a[href^="mailto"]')
emails = [et.get_text() for et in email_tags]
print(emails)
只需在每个步骤的列表中添加一行:
List<char> steps = new List<char>();
最后,您可以轻松计算列表中的移动次数
char move = 'F';
steps.add(move);