1.先构造类
属性:半径 行为:周长 面积 昨天把大圆面积-小圆面积在构造里也算了… 不符合 那个什么六字原则啊~~
package com.lovo;
/**
* 类:水池
* 属性:半径
* 行为:外圈, 面积
* @author Abe
*
*/
public class Pool {
private double r;
/**
* 构造器
* @param r
*/
public Pool(double r) {
this.r = r;
}
/**
* 外围围墙周长
*/
public double girth(){
double length = 2 * Math.PI * r ;
return length;
}
/**
* 求圆面积
*/
public double area(){
double area = Math.PI * r * r;
return area;
}
}
2.程序求造价
package com.lovo;
import java.util.Scanner;
/**
* 输入半径 求水池造价
*
* @author Abe
*
*/
public class Testpool {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double r = 0;
final double CP = 8;
final double SP = 10;
do {
System.out.printf("请输入水池的半径:");
if (sc.hasNextDouble()) {
r = sc.nextDouble();
if (r > 0) {
Pool small = new Pool(r);
Pool big = new Pool(r + 3);
// 其他都是扯淡,算造价就这一句……妥妥的……
System.out
.printf("半径为%f米的水池,围墙造价为%.2f元,过道造价为%.2f元。\n总价为%.2f元。",
r,big.girth() * CP, (big.area() - small.area()) * SP,
big.girth() * CP + (big.area() - small.area()) * SP);
} else {
System.out.println("请输入正确的半径数字哦亲……");
sc.nextLine(); //为啥没这句 先输入负数 在输入字符 就会循环2次?为啥负数也没被消耗掉啊???
}
} else {
System.out.println("尼玛,输入的就不是数字好吧?!");
sc.nextLine();
}
} while (r <= 0); // 如果是正数就运算出结果了 程序结束
// r原始值是0 如果是之后又被赋予了负数 都会造成程序循环
// 输入字符串 不会改变r 所以保持0 或者负数 继续循环
sc.close();
}
}