我必须找到隐藏在3行文本中的4位PIN码


using System;
namespace HiddenMessageC
{
class Program
{
static void Main(string[] args)
{
string encodedPinNumber = Console.ReadLine();
string startPostionString = Console.ReadLine();
int step = Convert.ToInt32(Console.ReadLine());
string pin = "";
int startPostion = startPostionString[0] - 'a';
pin += encodedPinNumber[startPostion] + encodedPinNumber[startPostion + step];
pin += encodedPinNumber[startPostion + 2 * step] + encodedPinNumber[startPostion + 3 * step];
Console.WriteLine(pin);
Console.Read();
}
}
}

第一行是长度大于4的文本,仅由0到9的数字组成。

第二行编码文本中隐藏Pin码开始的索引。取值为字母a、b或c,其中a表示起始索引为0,b表示起始索引为1,c表示起始索引为2。

第三行是一个数字,表示我们需要从第一行的文本中跳过多少个字符(从上面指定的起始索引开始)来发现PIN码的4位数字。

如果输入123456789,a, 2 =>我应该得到1357的结果…但我的结果是=>100108 .

你能给我一些建议吗?:)

正如Turo所说,当您使用索引访问字符串时,它将返回char。当两个char字段执行+操作时,将自动转换为int

所以尝试使用String。Substring获取单个字符的方法。

pin += encodedPinNumber.Substring(startPostion, 1) + encodedPinNumber.Substring(startPostion + step, 1);
pin += encodedPinNumber.Substring(startPostion + 2 * step, 1) + encodedPinNumber.Substring(startPostion + 3 * step, 1);

或者将所有字符存储在一个列表中,然后使用索引访问它们。

List<string> stringlist = encodedPinNumber.Select(c => c.ToString()).ToList();
pin += stringlist[startPostion] + stringlist[startPostion + step];
pin += stringlist[startPostion + 2 * step] + stringlist[startPostion + 3 * step];

尝试将其分解为4个赋值或一个循环。

encodedPinNumber[startPostion] + encodedPinNumber[startPostion + step]

正在做我所假定的:添加char值。

'1' = 49, '3' = 51,给出100

'5' = 53, '7' = 55,得出108

或者使用substring代替使用string作为char-Array

最新更新