【发布时间】:2021-12-22 17:06:51
【问题描述】:
我遇到了问题,我想知道我的代码是否有问题。
代码应执行以下操作
-
在终端中执行时,MoveAmount 和 Move 应该最终彼此相等。
-
A 面应遵循等式 (x*a)/(a+b) 并以正确的值执行。 (x 代表移动,A 和 B 代表它们的透视比)。
-
移动 - A 面 = B 面
-
移动 = SideA + SideB
不幸的是,它似乎不起作用,我无法获取代码来创建正确的输出。
如果我尝试根据此图 输入我的值,则 A 侧和 B 侧的计算运动返回不正确,并且输出不符合上述所需参数。
如果有人可以给我任何提示,请告诉我。
using System;
namespace Example
{
class CalculatedMove
{
public double Move = 0.0;
public double SideARatio = 0.0;
public double SideBRatio = 0.0;
public CalculatedMove(double SideARatio, double SideBRatio, double Move)
{
this.Move = Move;
this.SideARatio = SideARatio;
this.SideBRatio = SideBRatio;
}
public virtual void SideA()
{
double SideA = 0.0;
SideA = (Move * SideARatio) /(SideARatio + SideBRatio);
Console.WriteLine("Calculated Side A Movement is {00:00.0000}", SideA);
}
public void SideB()
{
double SideB = 0.0;
SideB = Move - SideARatio;
Console.WriteLine("The Calculated Side B Movement is {00:00.0000}", SideB);
}
public void MovementAmount()
{
double MovementAmount = 0.0;
MovementAmount = SideARatio + SideBRatio;
Console.WriteLine("The Calculated Move Amount is {0:00.0000}", MovementAmount);
}
}
class Program
{
static void Main(string[] args)
{
double Move, SideARatio, SideBRatio = 0.0;
Console.WriteLine("Enter the Move Amount ");
Move = Double.Parse(Console.ReadLine());
Console.WriteLine("Side A Ratio");
SideARatio = Double.Parse(Console.ReadLine());
Console.WriteLine("Side B Ratio");
SideBRatio = Double.Parse(Console.ReadLine());
CalculatedMove objMove = new CalculatedMove(Move, SideARatio,SideBRatio);
objMove.SideA();
objMove.SideB();
objMove.MovementAmount();
Console.Read();
}
}
}
【问题讨论】:
-
让我跳出来的是调用时的参数顺序……
new CalculatedMove(Move, SideARatio,SideBRatio);……? ...构造函数使用了不同的参数顺序...public CalculatedMove(double SideARatio, double SideBRatio, double Move)...这看起来不对...我很确定您想调用构造函数...new CalculatedMove(SideARatio,SideBRatio,Move); -
你需要查询的是浮点数计算的准确性。你也可以尝试使用
decimal来达到你的目的。 -
开始调试,如果还是找不到问题,回来提供一些调试信息。
标签: c# algorithm visual-studio