0

3辺すべての値が与えられた三角形の面積を計算するプログラムを作成しようとしています. ランナー ファイルを使用してプログラムを実行すると、領域が " 0.0" になります。

これがクラスの完全なコードです(setSidesとtriangleに対して同じコードを実行したことは知っていますが、インストラクターがこのシェルを提供してくれたので、そこに何を入れるかわかりませんでした)

import java.util.Scanner; 
import java.lang.Math.*;

public class Triangle
{
 private int sideA;
 private int sideB;
 private int sideC;
 private double theArea; 
 private double s; 
 private double perimeter; 

 public Triangle()
 {
     sideA = 1;
     sideB = 1;
     sideC = 1;
 }

 public Triangle(int a, int b, int c)
 {
   sideA = (int) a;
   sideB = (int) b;
   sideC = (int) c;   
 }


 public void setSides(int a, int b, int c)
 {
   sideA = (int) a;
   sideB = (int) b;
   sideC = (int) c;
 }

 private double calcPerimeter()
 {
  double perimeter = sideA + sideB + sideC;
        return perimeter;
 }



private double calcArea()
 {
  double s = calcPerimeter() / 2;
  double theArea = (Math.sqrt(s * (s - sideA) * (s - sideB) * (s - sideC))); 
  return theArea;
 }

 public void print()
 {
    System.out.println("Area == " + theArea); 
 }
}
4

3 に答える 3

2

私はあなたの声明をシステムアウトしました。使用しているのは減算演算子ではありません。修正してください。それが動作します。も定義しpermiterます。

System.out.println((int)'–');

出力:
8211

于 2015-09-21T13:06:16.723 に答える
1

単純なテキスト ドキュメントではないドキュメントからソース コードの一部をコピーした可能性はありますか?

もしそうなら、あなたの問題はあなたのマイナス記号が適切な文字ではないということです. テキスト エディタでもう一度入力してみてください。

ED: また、マイナス記号はスペースで囲む必要があります。これを初めて見たときは、ぞっとしました。

改訂されたコードでは、負の数を平方根することができます。これは、非常に悪い状態になります。

于 2015-09-21T13:06:25.157 に答える
0

削除する:

private double perimeter; 

そして変更:

 private double calcArea()
 {
  double s = perimeter / 2;
  double theArea = (Math.sqrt(s * (s - sideA) * (s - sideB) * (s - sideC))); 
  return theArea;
 }

に:

 private double calcArea()
 {
  double s = calcPerimeter() / 2;
  double theArea = (Math.sqrt(s * (s - sideA) * (s - sideB) * (s - sideC))); 
  return theArea;
 }

これが何が起こっているかです。perimeter というプライベート double を宣言します。コードの後半で、perimeter という double をもう一度宣言します。これを行うと、物事は本当に混乱します!同じ名前の変数は 1 回だけ宣言し、その後はそれらを参照するようにしてください。

于 2015-09-21T14:01:28.420 に答える