doubsweet


私信TA

用户名:doubsweet

访问量:739

签 名:

等  级
排  名 77966
经  验 126
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 成都理工大学
专  业

  自我简介:

TA的其他文章

解题思路:

注意事项:

参考代码:

import java.text.DecimalFormat;
import java.util.Scanner;

public class Main {
    /*
    * 使用一张纸和一把剪刀,你可以用以下方式剪下两个面来形成一个圆柱体:
水平切割纸张(平行于短边),得到两个矩形部分。

从第一部分开始,切出一个最大半径的圆。圆圈将形成圆柱体的底部。

卷起第二部分,使其周长与圆的周长相等,并将卷的一端连接到圆上。请注意,卷可能有一些重叠部分,以便获得所需的周长。

给定纸张的尺寸,你能计算出一个圆柱体的最大可能体积吗?这个圆柱体可以用上面描述的程序来构造。

输入
输入由几个测试用例组成。每个测试用例由两个数字w和h组成( 1 ≤ w ≤ h ≤ 100 ),表示纸张的宽度和高度。

最后一个测试用例后面跟着一行包含两个零的代码。

输出
对于每个测试案例,用最大可能体积的圆柱体打印一行。将这个数字四舍五入到小数点后3位。
    * */
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            double w = scanner.nextDouble();//宽
            double h = scanner.nextDouble();//高
            if ( w==0 || h==0)
                break;
            if (w > h) {//如果宽大于高,则交换两者的值
                double temp;
                temp = w;
                w = h;
                h = temp;
            }
//            DecimalFormat df = new DecimalFormat("##.000");//将结果保留三位小数
            double result01 = situation01(w, h);
            double result02 = situation02(w, h);
            if (result01 >= result02) {
                System.out.println(String.format("%.3f", result01));//保留三位小数的第二种方法
            } else {
                System.out.println(String.format("%.3f", result02));
            }
        }

    }

    public static double situation01(double w, double h) {//情况1,需要判断r*2和w的大小
        double v = 0;
        double r = h / (2 * (Math.PI + 1));
        r = r*2>w?w/2:r;
        v = Math.PI * (Math.pow(r, 2)) * w;
        return v;
    }

    public static double situation02(double w, double h) {//情况2
        double v = 0;
        double r = w / (2 * Math.PI);
        v = Math.PI * Math.pow(r, 2) * (h - 2 * r);
        return v;
    }
}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区