我一直在嘗試解決這個關于我的程式的問題,即使用 Heron 公式和用戶輸入列印三角形面積的最終結果
static void Main(string[] args)
{
//variable/s declaration
double a, b, c, Area;
//Ask for the values of the three sides of the triangle.
Console.Write("Enter first side: ");
a = double.Parse(Console.ReadLine());
Console.Write("Enter second side: ");
b = double.Parse(Console.ReadLine());
Console.Write("Enter third side: ");
c = double.Parse(Console.ReadLine());
//instantiate a triangle
Triangle KD = new Triangle();
Area =KD.FindingA();
//display the values of the three sides and the area of the triangle
Console.WriteLine("First Side = {0:R}", a);
Console.WriteLine("Second Side = {0:R}", b);
Console.WriteLine("Third Side = {0:R}", c);
Console.WriteLine("Area of triangle = {0:R}", Area);
}
public class Triangle
{
//fields
private double A, B, C, s, Area;
public double a, b, c;
//constructors
public double GetASide()
{ return this.a; }
public void SetASide(double value)
{ this.a = value; }
public double GetBSide()
{ return this.b; }
public void SetBSide(double value)
{ this.b = value; }
public double GetCSide()
{ return this.c; }
public void SetCSide(double value)
{ this.c = value; }
//create a method that will compute the area of the triangle
public double FindingA()
{
s = (a b c)/2;
Area = Math.Sqrt(s * (s - a) * (s - b) * (s - c));
return Area;
}
輸出應該在哪里
First Side = 5.1
Second Side = 5.1
Third Side = 3.2
Area of triangle = 7.7480
但是當我輸入它時,它顯示
First Side = 5.1
Second Side = 5.1
Third Side = 3.2
Area of triangle = 0
請幫我解決這個問題,我想不出任何解決方案
uj5u.com熱心網友回復:
您沒有正確創建三角形,a您的 triangle 類內部與a您的 main 方法中的類完全不同。創建三角形后,您需要設定三角形的所有邊。
我建議定義你的三角形
public class Triangle
{
public double A {get;}
public double B {get;}
public double C {get;}
public Triangle(double a, double b, double c){
A = a; B = b; C = c;
}
public double GetArea(){
var s = (a b c)/2;
var area = Math.Sqrt(s * (s - a) * (s - b) * (s - c));
return area;
}
}
...
var myTriangle = new Triangle(a, b, c);
var area = myTriangle.GetArea();
這做了幾件事:
- 沒有必要的引數就無法創建區域
- 這使得 Area 和 side-properties 不可能不同步
- 它洗掉了多余的 getter/setter 方法并改用自動屬性
- 它使用一種方法向用戶提示計算實際上可能需要一些(在這種情況下非常短)時間。通常預計房產的價格會非常便宜。
您可以選擇是否要在建構式中預先計算面積并將其存盤在另一個 get-only 屬性中,或者按需計算,每個都有一些優點。我傾向于按需計算它,因為計算非常便宜,而且如果你存盤數百萬個三角形,記憶體成本可能會增加。
如果您真的想在創建后更改三角形的邊,您可以考慮使用記錄而不是類,因為它允許使用運算式
var myTriangle = new Triangle(3, 4, 5);
var newTriangle = myTriangle with{ A = 6 }
但是,您可以使用常規方法復制常規類的功能。
uj5u.com熱心網友回復:
您在程式的主要部分中宣告和分配變數。就像你的主程式中的 de 變數(邊 a、b 和 c)是 5.1、5.1 和 3.2。但是物件 Triangle KD 中的變數仍然是空的。函式 FindingA 計算物件的邊 a、b 和 c 的面積,這些仍然是 0。希望這是一個答案。
uj5u.com熱心網友回復:
這有效
using System;
public class Program
{
public static void Main()
{
var a = 5.1D;
var b = 5.1D;
var c = 3.2D;
var s = (a b c)/2.0D;
var area = Math.Sqrt(s * (s - a) * (s - b) * (s - c));
Console.WriteLine("First Side = {0:R}", a);
Console.WriteLine("Second Side = {0:R}", b);
Console.WriteLine("Third Side = {0:R}", c);
Console.WriteLine("Area of triangle = {0:R}", area);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/507871.html
上一篇:Python-線性到對數比例轉換
