介绍Java的分配 - 单元9:编译/从命令运行
问题描述:
行
这里是我的问题介绍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) {
}
}
}
答
你应该他们两个存储在两个独立的类,并且您然后可以通过调用方法测试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
}
答
你应该有两个班,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()
。