C#将数字列表转换为负数
如何在一行中将数字列表转换为负数? 我还想知道我所做的是否正确,是否有人有改进的建议 我试图生成一个给定半径的圆。我使用列表来存储x和y,因此不完全确定这是否是最好的方法。下面的评论也是我想要负数的地方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
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值为负数。