C# 即使值发生变化,列表仍会获得相同的第一个值

C# 即使值发生变化,列表仍会获得相同的第一个值,c#,list,int,add,C#,List,Int,Add,我正在编写一个加密程序代码,更具体地说: 我目前正在写一个检查,对字母进行加密,然后解密,以查看它们是否可以被加密,然后将解密后的输出与初始输入进行比较。 我之所以选择此选项,是因为解密公式使用的是cos^-1,它不能使用值 不幸的是,字母的整数列表(a=1、b=2、z=26等)会不断添加相同的第一个值,即使值发生变化 守则的一部分: foreach(int x in LetInt) { DoubInt++; try { CheckLetInt.Add(Conv

我正在编写一个加密程序代码,更具体地说:
我目前正在写一个检查,对字母进行加密,然后解密,以查看它们是否可以被加密,然后将解密后的输出与初始输入进行比较。
我之所以选择此选项,是因为解密公式使用的是
cos^-1
,它不能使用值

不幸的是,字母的整数列表
(a=1、b=2、z=26等)
会不断添加相同的第一个值,即使值发生变化

守则的一部分:

foreach(int x in LetInt) {
    DoubInt++;

    try {
        CheckLetInt.Add(Convert.ToInt64(Math.Acos(Math.Pow((((Math.Tan((x+1) / (180/Math.PI)) / Math.Sin((x+1) / (180/Math.PI))) * (Math.Cos(A / (180/Math.PI)) * B)) - 1) / (Math.Cos(A / (180 / Math.PI)) * B), -1)) * (180 / Math.PI)));
        Console.WriteLine("Correct number:" + Convert.ToInt64(Math.Acos(Math.Pow((((Math.Tan((x+1) / (180/Math.PI)) / Math.Sin((x+1) / (180/Math.PI))) * (Math.Cos(A / (180/Math.PI)) * B)) - 1) / (Math.Cos(A / (180 / Math.PI)) * B), -1)) * (180 / Math.PI)));
        Console.WriteLine("List content:" + CheckLetInt[DoubInt - 1]);
        CheckLetter.Add(LetPos[Convert.ToInt64(CheckLetInt[DoubInt - 1]) - 1]);
    } catch(Exception) {
        ValueError.Visible = true;
        ClearAll();
        Console.WriteLine("Caught.");
    }
}
输出:

有人知道发生了什么吗?
“正确数字”和“列表内容”公式相同


稍后在循环中执行以下操作:

if(string.Join("", CheckLetter) == string.Join("", Letters.ToArray())) {
     ...
} else {
     ClearAll();
}
您从未修改循环中的字母,但确实修改了CheckLetter,因此这将主要返回false,调用ClearAll()方法

在ClearAll()中,您将DoubInt设置回零-因此始终显示第一个条目

        DoubInt = 0;

请注意,这不是“加密”任何内容的好方法。如果你只是在玩,那么好吧,但是如果你想学习密码学,你应该先阅读相同的基础知识,如果你认为这是“加密”

你能提取所有必要的代码来复制这个问题吗?我不确定我是否完全理解你的问题,但你是在尝试“加密”文本,一次一个字母,使用三角学…?杜宾特在哪里定义?你不能增加它properly@Milney对的我取每个字母的整数,然后用公式计算它们。然后我加或减26,直到我再次达到一个介于1和26之间的值,然后输出新的字母和26被加或减的次数。DoubInt被定义为一个静态int,我认为它的定义是正确的,因为“正确的输出”值是正确的,对于没有这个值的其余部分,请检查代码是否正常工作。