你这个程序第二个类其实特别乱 是我刚才没细看
这回肯定改对了 我测试过了
还有你所说的推荐答案根本没必要用buffer,系统完全可以获取double类型的数据好么?别误导初学者!
运行之后,你只要每次输入一个边之后回车,然后再输入一个回车,在输入一个回车就行。三次赋值之后运行出结果!
这个你要再有错 我只能说是你自己没复制好了,我在补充
import java.util.Scanner;
public class Triangle {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
double side1,side2,side3;
System.out.println("Please enter the length of the three sides of the triangle: ");
side1=scan.nextDouble();
side2=scan.nextDouble();
side3=scan.nextDouble();
Calculator myC=new Calculator(side1,side2,side3);
System.out.println(myC);
}
}
---------------------------------------------------------------------------------------------------------------------
public class Calculator
{
double area,side1,side2,side3;
//在这里设置一个变量s ,你的没错 我这么做是为了强调着一点
double s;
//构造器只需要用三个参数就可以了
public Calculator(double a,double b,double c)
{
//主要是这里错了!应该先赋值在计算s
side1=a;
side2=b;
side3=c;
//海伦公式你也用错了 应该是除以2
s=(side1+side2+side3)/2;
calc();
}
private void calc()
{
area=(Math.sqrt(s*(s-side1)*(s-side2)*(s-side3)));
}
public String toString()
{
return ("The area of the triangle is "+area);
}
}