Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#将数字列表转换为负数_C#_Arrays_List - Fatal编程技术网

C#将数字列表转换为负数

C#将数字列表转换为负数,c#,arrays,list,C#,Arrays,List,如何在一行中将数字列表转换为负数? 我还想知道我所做的是否正确,是否有人有改进的建议 我试图生成一个给定半径的圆。我使用列表来存储x和y,因此不完全确定这是否是最好的方法。下面的评论也是我想要负数的地方 private static void Generate_Circle(double x0, double y0, double radius) { double y, r2; double x; r2 = (radius * ra

如何在一行中将数字列表转换为负数? 我还想知道我所做的是否正确,是否有人有改进的建议

我试图生成一个给定半径的圆。我使用列表来存储x和y,因此不完全确定这是否是最好的方法。下面的评论也是我想要负数的地方

    private static void Generate_Circle(double x0, double y0, double radius)
    {
        double y, r2;
        double x;
        r2 = (radius * radius);
        List<double> xList = new List<double>();
        List<double> yList = new List<double>();
        for (x = -radius; x <= radius; x += radius / 10)
        {
            y = Math.Sqrt(r2 - x * x);
            xList.Add(x);
            yList.Add(y);
        }
        List<double> xxList = new List<double>();
        xxList.AddRange(xList);
        xList.Reverse();
        xxList.AddRange(xList);
        List<double> yyList = new List<double>();
        yyList.AddRange(yList); // This should be converted to negative values
        yList.Reverse();
        yyList.AddRange(yList);

        for (int i = 0; i < xxList.Count; i++) // Loop through List with for
        {
            Console.WriteLine(xxList[i] + " " + yyList[i]);
        }
    }
private static void生成_圆(双x0,双y0,双半径)
{
双y,r2;
双x;
r2=(半径*半径);
List xList=新列表();
List yList=新列表();
对于(x=-radius;x尝试:

List=yList.Select(x=>-x.ToList();
试试:

List=yList.Select(x=>-x.ToList();

使用
选择
扩展名对每个值进行计算。当您说“转换为负值”时,我假设所有值最初都是正值,因此您可以简单地更改符号:

yyList.AddRange(yList.Select(n => -n));

复制和反转值的另一种方法是只使用两次值,然后根本不必创建第二组列表:

for (int i = 0; i < xList.Count; i++) {
  Console.WriteLine(xList[i] + " " + yList[i]);
}
for (int i = xList.Count - 1; i >= 0; i--) {
  Console.WriteLine(xList[i] + " " + (-yList[i]));
}
for(int i=0;i=0;i--){
Console.WriteLine(xList[i]+“”+(-yList[i]);
}

然而,您对列表的计算一开始就错了。使用平方根不能得到圆形曲线。您需要使用正弦和余弦

for (double r = 0; r < Math.PI; r += Math.PI / 20) {
  xList.Add(Math.Cos(r) * radius);
  yList.Add(Math.Sin(r) * radius);
}
for(双r=0;r
使用
选择
扩展名对每个值进行计算。当您说“转换为负值”时,我假设所有值最初都是正值,因此您可以简单地更改符号:

yyList.AddRange(yList.Select(n => -n));

复制和反转值的另一种方法是只使用两次值,然后根本不必创建第二组列表:

for (int i = 0; i < xList.Count; i++) {
  Console.WriteLine(xList[i] + " " + yList[i]);
}
for (int i = xList.Count - 1; i >= 0; i--) {
  Console.WriteLine(xList[i] + " " + (-yList[i]));
}
for(int i=0;i=0;i--){
Console.WriteLine(xList[i]+“”+(-yList[i]);
}

然而,您对列表的计算一开始就错了。使用平方根不能得到圆形曲线。您需要使用正弦和余弦

for (double r = 0; r < Math.PI; r += Math.PI / 20) {
  xList.Add(Math.Cos(r) * radius);
  yList.Add(Math.Sin(r) * radius);
}
for(双r=0;r
您可以使用Linq并将该行替换为

yyList.AddRange(yList.Select(num => -num));
请注意,如果尚未为Linq添加
using
子句,则必须添加该子句

using System.Linq;

您可以只使用Linq,并将该行替换为

yyList.AddRange(yList.Select(num => -num));
请注意,如果尚未为Linq添加
using
子句,则必须添加该子句

using System.Linq;

那也行。谢谢。我一直在考虑使用linq来做这件事。不能分配给foreach循环变量。那也行。谢谢。我一直在考虑使用linq来做这件事。不能分配给foreach循环变量。当我发布我的答案时,我甚至没有想到这一点,但是!假设这些是坐标,如果你是“reversin”g’坐标,这是我假设发生的,最初为负的点很可能需要变为正,因为圆算法y始终是正的,这是第一个循环给出的。y值被反转,得到圆的一半,而另一半的y值是负的。我做到了当我发布我的答案时,我甚至没有想到这一点,但是!假设这些是坐标,如果你正在“反转”坐标,这就是我所假设的,最初为负数的点很可能需要变为正数,因为圆算法y总是正数,这是第一个循环给出的y值反转以获得圆的一半,而对于另一半,y值为负数。