//Trangle.java package first; import java.util.Scanner; public class Trangle { double l1,l2,l3,C1,S1; boolean flag; //修改三条边的功能 public Trangle(){ System.out.println("请输入三条边边长l1,l2,l3:"); Scanner input=new Scanner(System.in); double l1=input.nextDouble(); double l2=input.nextDouble(); double l3=input.nextDouble(); input.close(); this.l1=l1; this.l2=l2; this.l3=l3; } //返回三角形的周长和面积 public String getInfo(){ return "周长:"+C1+"\n面积:"+S1; } //显示三角形的周长和面积 public void introduce(){ System.out.println(getInfo()); } //判断能否能构成三角形 public boolean flag(){ boolean flag; if((l1+l2)>l3 && (l1+l3)>l2 && (l2+l3)>l1){ flag=true; } else{ flag=false; } return flag; } } //Lader.java package first; import java.util.Scanner; public class Lader { double l1,l2,h,S2; public Lader(){ System.out.println("请输入梯形的上底,下底和高:"); Scanner input=new Scanner(System.in); double l1=input.nextDouble(); //这个地方就有异常,上面的三角形没有 double l2=input.nextDouble(); double h=input.nextDouble(); input.close(); this.l1=l1; this.l2=l2; this.h=h; } //返回梯形的面积 public String getInfo(){ return "面积:"+S2; } //显示梯形的面积 public void introduce(){ System.out.println(getInfo()); } } //Circle,java package first; import java.util.Scanner; public class Circle { double r,C3,S3; public Circle(){ System.out.println("请输入圆的半径:"); Scanner input=new Scanner(System.in); double r=input.nextDouble(); input.close(); this.r=r; } //返回圆形的周长和面积 public String getInfo(){ return "周长:"+C3+"\n面积:"+S3; } //显示圆形的周长和面积 public void introduce(){ System.out.println(getInfo()); } } //Initial.java package first; public class Initial { public static void main(String[] args){ //三角形 double p; boolean flag; Trangle tra=new Trangle(); Lader la=new Lader(); Circle cir=new Circle(); flag=tra.flag(); if(flag==true){ System.out.println("输入的三个数可以构成三角形。"); tra.C1=tra.l1+tra.l2+tra.l3; p=tra.C1/2; tra.S1=Math.sqrt(p*(p-tra.l1)*(p-tra.l2)*(p-tra.l3)); tra.introduce(); } else{ System.out.println("输入的三个数不能构成三角形。"); } //梯形 la.S2=(la.l1+la.l2)*la.h/2; la.introduce(); //圆 cir.C3=2*Math.PI*cir.r; cir.S3=Math.PI*cir.r*cir.r; cir.introduce(); } }
三角形的代码和梯形的都是一个模子的,为什么三角形没问题,梯形有问题,求高手帮看看,感激不经
解决方案
20
Scanner input=new Scanner(System.in);
input.close();
这个地方有问题。
System.in是输入流,只有一个,你把它关闭了,在第二个类中再去取到是会报错的。(你可以调整一下三角形和梯形的位置,看看哪会报错。)
你可以把全部的读取操作放到主类中去处理,任何通过构造函数传入具体的值。
input.close();
这个地方有问题。
System.in是输入流,只有一个,你把它关闭了,在第二个类中再去取到是会报错的。(你可以调整一下三角形和梯形的位置,看看哪会报错。)
你可以把全部的读取操作放到主类中去处理,任何通过构造函数传入具体的值。