2016-08-03 48 views
0

这里是我的问题介绍Java的分配 - 单元9:编译/从命令运行

  • 写称为FrustumContainer一个Java的类定义描述了形状像截头圆锥体实验室容器,计算每个容器将容纳的液体量。

  • 定义该类的构造函数,并包含容器编号,高度,容器的半径1 和容器的半径2的访问器方法,以及计算液体量(以升计)的方法容器可以容纳。

  • 还包含另一个类,称为ContainerTester,它具有测试FrustumContainer类的所有方法的主要方法。

  • 编译这两个类并使用命令行环境执行测试仪类。

只是想知道如何去做这件事,两个班都必须在单独的文件?我不明白ContainerTester如何测试在FrustrumContainer所有方法

这里是我到目前为止的代码:

import java.math.*; 
import java.util.Scanner; 
public class FrustrumContainer { 
    Scanner in = new Scanner(System.in); 
    double num = 0; 
    double h = 0; 
    double r1 = 0; 
    double r2 = 0; 
    double volume;` 

public FrustrumContainer(double num, double h, double r1, double r2, double volume) { 
    this.num = num; 
    this.h = h; 
    this.r1 = r1; 
    this.r2 = r2; 
    this.volume = volume; 

public static double getNum() { 
    num ++; 
    return num; 
} 

public static double getHeight() { 
    System.out.println("Enter height of container: "); 
    h = in.next(); 
    return h; 
} 

public static double getR1() { 
    System.out.println("Enter bottom radius: "); 
    r1 = in.next(); 
    return r1; 
} 

public static double getR2(){ 
    System.out.println("Enter top radius: "); 
    r2 = in.next(); 
    return r2; 
} 

public static double computeLiquid() 


} 
} 

class ContainerTester { 
    public static void main(String[] args) { 


     } 
    } 
} 

回答

0

你应该他们两个存储在两个独立的类,并且您然后可以通过调用方法测试FrustrumContainer使用类似语法

ClassName.methodName(); 

由于FrustrumContainer每一个方法是静态的,你不需要实例化FrustrumContainer对象就可以直接从类调用方法来代替。你可以这样调用:

public static void main(String[] args) { 
    FrustrumContainer.getNum();// note this only returns the number 

    double num1 = FrustrumContainer.getNum();//you can store the returned type i.e double for num 

    System.out.println(num1);//and print it to the console 
} 
0

你应该有两个班,FrustumContainer.class和ContainerTester.class,并把两者在同一字典。

FrustumContainer.class:

import java.util.Scanner; 

public class FrustumContainer { 
    int num = 0; 
    double height = 0; 
    double radius1 = 0; 
    double radius2 = 0; 
    double volume = 0; 

    final static double PI = Math.PI; 

    Scanner in = new Scanner(System.in); 

    public FrustumContainer(){ 
     this.num ++; 
    } 

    public void getHeight(){ 
     System.out.println("please input the value of height (unit:dm):"); 
     height = in.nextDouble(); 
    } 

    public void getRadius1(){ 
     System.out.println("please the input the value of radius1 (unit:dm):"); 
     radius1 = in.nextDouble(); 
    } 

    public void getRadius2(){ 
     System.out.println("please the input the value of radius2 (unit:dm):"); 
     radius2 = in.nextDouble(); 
    } 

    public double computeLiquid(){ 
     double height1 = 0; 
     if(height <= 0 || radius1 <= 0 || radius2 <= 0){ 
      System.out.println("please input again"); 
     }else{ 
      if(radius1 < radius2) { 
       // solve height1,(h1+h)/h1 = r2/r1 
       height1 = height/(radius2/radius1 -1); 
       // get volume, 1/3 * PI* (r2*r2*(h1+h) -r1*r1*h1) 
       volume = (PI * ((radius2 * radius2 * (height1 + height)) - (radius1 * radius1 * height1)))/3; 
      }else{ 
       height1 = height/(radius1/radius2 -1); 
       volume = (PI * (radius1 * radius1 * (height1 + height)- radius2 * radius2 * height1))/3; 
      } 
     } 
     return volume; 
    } 
} 

ContainerTester.class:

public class ContainerTester { 
     public static void main(String[] args){ 
      FrustumContainer frustumContainer = new FrustumContainer(); 
      frustumContainer.getHeight(); 
      frustumContainer.getRadius1(); 
      frustumContainer.getRadius2(); 
      int num = frustumContainer.num; 
      double volume = frustumContainer.computeLiquid(); 
      System.out.println("The volume of NO."+ num +" container is " + volume + " L"); 
     } 
    } 

可以调用FrustumContainer.class的方法ContainerTester.class像frustumContainer.getHeight()