1

私のコード:

function calculate(sides) {

  var sides = prompt("Triangle side lengths in cm
  (number,number,number)"); //String will be size of 4

  var nsides = sides.split(" "); //Splits content into array format
  //Convert Array instances to integer values a,b,c

  for(var loop=0;loop<=nsides.length;loop++)   {
  if(nsides[loop]!=",")
  a = nsides[loop];

  if(nsides[loop]!=",")
  b = nsides[loop];

  if(nsides[loop]!=",")
  c= nsides[loop];
  } //End for    

  //Area Calculation
  var s = (a+b+c)*0.5 ; //represents the semiperimeter 
  var area = Math.sqrt(s*(s-a)*s(s-b)*(s-c)) //area calculation

      //Result
  sides = alert("The triangle's area is " + area + " square cm");


}   //End function

 //Main calculate(length);

サイド a、b、および c を整数に設定しようとしています。ただし、それを行うには、配列を通過する必要があります(最初に文字列から配列に変換しました)

後で標準的な検証を追加します。今のところ、入力された文字列の値を ab と c の 3 つの別々の整数に配置できないようです。

それ以外に、これについてもっと良い方法はありますか?

ありがとう。

4

2 に答える 2

1
function calculate() {
    var sides = prompt("Triangle side lengths in cm (number,number,number)"),
        nsides = sides.split(","),
        a = parseFloat(nsides[0]),
        b = parseFloat(nsides[1]),
        c = parseFloat(nsides[2]),
        s = (a + b + c) / 2,
        area = Math.sqrt(s * (s - a) * (s - b) * (s - c));
    alert("The triangle's area is " + area + " square cm");
    return area; // return the area
}

まず、あなたのパラメータを削除しました。これはまったく不要sidesで、最初の行の の宣言によって上書きされました。次に、分割を変更して、,あなたの指示に従います。parseInt次に、基数10を使用して指定し、文字列を整数に解析する必要があります。その後、計算を続行できます。最後に、関数として呼び出される数値を使用しているため、例外が発生するMath.sqrt(s*(s-a)*s(s-b)*(s-c))ことを確認してください。s(s-b)

于 2013-07-10T19:17:15.373 に答える