注册 登录
编程论坛 JAVA论坛

初学Java编程,这里对圆柱按体积排序的地方出了问题,怎么修改

一条沙丁鱼 发布于 2015-05-17 16:31, 777 次点击
package Java;
public class Circle
{
    int r;

    Circle(int r)
    {
        this.r = r;
    }

    // 返回直径
    public double getDiameter()
    {

        return 2 * r;
    }

    // 返回周长
    public double getCircumference()
    {
        return 2 * 3.14 * r;
    }

    // 返回面积
    public double getArea()
    {
        return Math.PI * r * r;

    }
}
package Java;

import
import java.util.Scanner;

public class Main
{
    static Cylinder cy[];

    public static void main(String[] args) throws IOException
    {
        double data[] = new double[3];
        cy = new Cylinder[3];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < cy.length; i++)
        {
            System.out.println("请输入圆柱的半径:");
            int r = sc.nextInt();
            System.out.println("请输入圆柱的高:");
            int h = sc.nextInt();
            cy[i] = new Cylinder(r, h);
        }
        for (int i = 0; i < cy.length; i++)
        {
            data[i] = cy[i].getVolume();
        }
        findCy();
        sort(data);

    }

    public static void sort(double data[])
    {
        double t = 0;
        for (int i = 0; i < data.length; i++)
        {
            for (int j = 0; j < data.length - i - 1; j++)
            {
                if (data[j] > data[j + 1])
                {
                    t = data[j];
                    data[j] = data[j + 1];
                    data[j + 1] = t;
                }
            }
        }
        System.out.println("排序结果为");
        for (int i = 0; i < data.length; i++)
        {
            System.out.println(data[i]);
        }

    }

    public static void findCy()
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要查找的高");
        int h = sc.nextInt();
        System.out.println("请输入要查找的半径:");
        int r = sc.nextInt();

        boolean flag = false;
        for (int i = 0; i < cy.length; i++)
        {
            if (r == cy[i].getr() && h == cy[i].getHeight())
            {
                System.out.println("第" + (i +1)+ "个圆柱满足条件");
                flag = true;
            }
        }
        if (flag == false)
        {
            System.out.println("没有找到这样的圆柱");
        }
    }
}
4 回复
#2
林月儿2015-05-17 17:10
import
import java.util.Scanner;
 class Circle
{
    int r;

    Circle(int r)
    {
        this.r = r;
    }

    // 返回直径
    public double getDiameter()
    {

        return 2 * r;
    }

    // 返回周长
    public double getCircumference()
    {
        return 2 * 3.14 * r;
    }

    // 返回面积
    public double getArea()
    {
        return Math.PI * r * r;

    }
}
class Cylinder extends Circle{
    int h;
    public Cylinder(int r, int h) {
        super(r);
        this.h=h;
    }

    public double getVolume() {
        return h*this.getArea();
    }

    public int getHeight() {
        return h;
    }

    public int getr() {
        return r;
    }

}

public class Main
{
   
    static Cylinder cy[];

    public static void main(String[] args) throws IOException
    {
        double data[] = new double[3];
        cy = new Cylinder[3];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < cy.length; i++)
        {
            System.out.println("请输入圆柱的半径:");
            int r = sc.nextInt();
            System.out.println("请输入圆柱的高:");
            int h = sc.nextInt();
            cy[i] = new Cylinder(r, h);
        }
        for (int i = 0; i < cy.length; i++)
        {
            data[i] = cy[i].getVolume();
        }
        findCy();
        sort(data);

    }

    public static void sort(double data[])
    {
        double t = 0;
        for (int i = 0; i < data.length; i++)
        {
            for (int j = 0; j < data.length - i - 1; j++)
            {
                if (data[j] > data[j + 1])
                {
                    t = data[j];
                    data[j] = data[j + 1];
                    data[j + 1] = t;
                }
            }
        }
        System.out.println("排序结果为");
        for (int i = 0; i < data.length; i++)
        {
            System.out.println(data[i]);
        }

    }

    public static void findCy()
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要查找的高");
        int h = sc.nextInt();
        System.out.println("请输入要查找的半径:");
        int r = sc.nextInt();

        boolean flag = false;
        for (int i = 0; i < cy.length; i++)
        {
            if (r == cy[i].getr() && h == cy[i].getHeight())
            {
                System.out.println("第" + (i +1)+ "个圆柱满足条件");
                flag = true;
            }
        }
        if (flag == false)
        {
            System.out.println("没有找到这样的圆柱");
        }
    }
}
#3
一条沙丁鱼2015-05-20 15:02
回复 2楼 林月儿
额,可能是我没有表达清楚我的意思,这样子按体积大小进行比较然后排序后,只是把两个圆柱的体积值进行了交换。就是说,假如第一个圆柱的底面半径和高分别是1,1;第二个圆柱的底面半径和高分别是1,2;计算的第一个圆柱的体积为3.14(约值),第二个为6.28;然后data[]存储了这两个值,进行排序时,6.28>3.14,进行交换,于是第一个圆柱的体积为6.28了,这样不是不对吗?请问是这样运行的吗?如果是,怎么修改?
#4
林月儿2015-05-20 16:41
import
import java.util.Scanner;
 class Circle
{
    int r;

    Circle(int r)
    {
        this.r = r;
    }

    // 返回直径
    public double getDiameter()
    {

        return 2 * r;
    }

    // 返回周长
    public double getCircumference()
    {
        return 2 * 3.14 * r;
    }

    // 返回面积
    public double getArea()
    {
        return Math.PI * r * r;

    }
}
class Cylinder extends Circle{
    int h;
    public Cylinder(int r, int h) {
        super(r);
        this.h=h;
    }

    public double getVolume() {
        return h*this.getArea();
    }

    public int getHeight() {
        return h;
    }

    public int getr() {
        return r;
    }

}

public class Main
{
   
    static Cylinder cy[];

    public static void main(String[] args) throws IOException
    {
        double data[] = new double[3];
        cy = new Cylinder[3];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < cy.length; i++)
        {
            System.out.println("请输入圆柱的半径:");
            int r = sc.nextInt();
            System.out.println("请输入圆柱的高:");
            int h = sc.nextInt();
            cy[i] = new Cylinder(r, h);
        }
        findCy();
        sort(cy);

    }

    public static void sort(Cylinder data[])
    {
        Cylinder t;
        for (int i = 0; i < data.length; i++)
        {
            for (int j = 0; j < data.length - i - 1; j++)
            {
                if (data[j].getVolume() > data[j + 1].getVolume())
                {
                    t = data[j];
                    data[j] = data[j + 1];
                    data[j + 1] = t;
                }
            }
        }
        System.out.println("排序结果为");
        for (int i = 0; i < data.length; i++)
        {
            System.out.println(data[i].r+"-"+data[i].h+"-"+data[i].getVolume());
        }

    }

    public static void findCy()
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要查找的高");
        int h = sc.nextInt();
        System.out.println("请输入要查找的半径:");
        int r = sc.nextInt();

        boolean flag = false;
        for (int i = 0; i < cy.length; i++)
        {
            if (r == cy[i].getr() && h == cy[i].getHeight())
            {
                System.out.println("第" + (i +1)+ "个圆柱满足条件");
                flag = true;
            }
        }
        if (flag == false)
        {
            System.out.println("没有找到这样的圆柱");
        }
    }
}
#5
一条沙丁鱼2015-05-22 09:47
好的,谢谢,我调试看看
1