我的代码:
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侧设置为整数;但是为了做到这一点,我必须通过数组(我首先将它从字符串转换为数组)
我稍后会添加一些标准验证;截至目前,我似乎无法将输入的字符串中的值放入3个单独的整数中,即b和c。
除此之外,还有更好的方法可以解决这个问题吗?
感谢。
答案 0 :(得分:1)
也许我误解了你的问题,但这就是你要找的东西吗?
var sides = prompt("Triangle side lengths in cm (number,number,number)");
var nsides = sides.split(",");
var a = +nsides[0];
var b = +nsides[1];
var c = +nsides[2];
//Area Calculation
//...
请注意使用+
强制数组中的字符串为数字。
答案 1 :(得分: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)
导致异常,因为您正在使用一个数字作为函数调用。