Code Bye

Java类与对象

//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是输入流,只有一个,你把它关闭了,在第二个类中再去取到是会报错的。(你可以调整一下三角形和梯形的位置,看看哪会报错。)
你可以把全部的读取操作放到主类中去处理,任何通过构造函数传入具体的值。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Java类与对象