我有一个字符串类型的重新洗牌方法,它需要一个char数组作为参数,每次使用Encrypt方法时它必须随机化数组内的字符..当我试图用另一种方法调用它时我的语法错误“方法有一些无效的参数”这是代码
char[] p = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
string reshuffle(char[] alpas)
{
Random random=new Random();
for (int t = 0; t < alpas.Length; t++)
{
char tmp = alpas[t];
int r = random.Next(t, alpas.Length);
alpas[t] = alpas[r];
alpas[r] = tmp;
}
return new string (alpas);
}
public string Encrypt(string pt)
{
reshuffledChars=reshuffle(p[25]);
char[] ch = reshuffledChars.ToCharArray();
char[] buffer = new char[(pt.Length)];
for(int i=0;i<pt.Length;i++)
{
for(int j=0;j<26;j++)
{
if (char.ToUpper(p[j]) == pt[i])
{
buffer[i] = char.ToUpper(ch[j]);
break;
}
else if(char.ToLower(p[j])==pt[i])
{
buffer[i] = char.ToLower(ch[j]);
break;
}
else if(pt[i]==' ')
{
buffer[i] = ' ';
}
}
}
return new string(buffer);
}
答案 0 :(得分:1)
您应该传递整个数组,而不是传递reshuffle(p[25])
,这是一个char
。reshuffle(p)
。
答案 1 :(得分:0)
在这一行: “reshuffledChars =洗牌(对[25]);” p [25]返回一个char
答案 2 :(得分:0)
Encrypt()
中的这一行:
reshuffle(p[25]);
应该(我假设)是:
reshuffle(p);
您将char
而不是char[]
传递给reshuffle()
- p[25]
是数组char
中的最后一个p
。
顺便说一句,如果p
保持不变,则需要在传递给reshuffle
之前将其复制。
答案 3 :(得分:0)
您传递了错误的参数而不是reshuffle(p[25])
使用reshuffle(p)
来发送整个数组。
如果您正在寻找随机字符串生成器,this link将有所帮助。我在dotnet小提琴中提供了一个工作示例。
using System;
using System.Linq;
namespace Rextester
{
public class Program
{
private static Random random = new Random();
public static string RandomString(int length)
{
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%&";
return new string(Enumerable.Repeat(chars, length)
.Select(s => s[random.Next(s.Length)]).ToArray());
}
public static void Main(string[] args)
{
//Your code goes here
Console.WriteLine(RandomString(8));
}
}
}