using System;
public class test
{
public static bool CapResult;
public static bool[] CapCover = {CapResult};
public static bool[] BoolWallet = {false};
public static int i = -1;
public static void Main()
{
string meString = "I am a Little string";
CapCheck(meString);
}
public static void CapCheck(string inputAnc)
{
inputAnc = inputAnc.Replace(" ", "");
char[] input = inputAnc.ToCharArray();
CapSis(input);
}
public static void CapSis(char[] input)
{
i++;
if (i <= input.Length - 1)
{
CapResult = Char.IsUpper(input[i]);
Array.Copy(CapCover,CapCover.GetLowerBound(0),BoolWallet,BoolWallet
.GetLowerBound(0),1);
Console.WriteLine(BoolWallet);
CapSis(input);
}
}
}
我不明白什么是错的。 Console.WriteLine在屏幕上打印System.Boolean []。我想把bool [] BoolWallet中的元素打印出来。我怎么能这样做?
答案 0 :(得分:0)
试试这个
string[] boolWalletStringArray = BoolWallet.Select(b => b.ToString()).ToArray();
Console.WriteLine(string.Join(", ", boolWalletStringArray));
答案 1 :(得分:0)
您收到该错误的原因是此行未指定数组中的位置,它是数组本身:
Console.WriteLine(BoolWallet);
这相当于:
Console.WriteLine(BoolWallet.ToString());
这将输出:
System.Boolean[]
...因为这是BoolWallet
可以提出的最佳字符串表示形式。您可以将自己的转换实现为string
,但我认为您只需要这样:
Console.WriteLine(BoolWallet[i]);
其他一些建议:
CapSis(input);
- 从CapSys方法中删除此行,此处不需要递归,而是使用for
循环。递归不是一个好的选择,如果你确实选择了递归,不要使用全局变量来检查你在字符串中的位置(如果其他东西意外地重置了那个变量怎么办? - 无限循环!)List
和lambdas - 它让这种事情变得异常简单(参见@ Myr的回答)