Java:比较3个正整数时的问题

时间:2012-09-01 13:57:40

标签: java algorithm boolean command-line-arguments

我一直在寻找这方面的帮助几个小时,找不到任何东西,或者我只是没有找对地方。

我正在尝试用Java创建一个简单的程序,它将三个正整数作为命令行参数,如果其中任何一个大于或等于其他两个的总和,则打印为TRUE,否则为FALSE。

public class Triangle {

    public static void main(String[] args){
        int a = Integer.parseInt(args[0]);
        int b = Integer.parseInt(args[1]);
        int c = Integer.parseInt(args[2]);
        boolean isTriangle;

        isTriangle = (a + b >= c);
        isTriangle = (b + c >= a);
        isTriangle = (a + c >= b);
        System.out.println(isTriangle);
    }

}

希望有些人可能会给我一个答案,或者说我指向正确的方向,这样我才能做到这一点。

3 个答案:

答案 0 :(得分:1)

我只是单独测试每个整数,因为它们只有3个。

public static boolean test(int a, int b, int c) {
    return (a >= b + c || b >= a + c || c >= a + b);
}

对于IO,您可以使用Scanner类。

Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();

请记住:import java.util.Scanner

编辑:我刚看到您想将整数作为命令行参数,在这种情况下,您只需使用Integer.parseInt(..)来转换String参数(组件)将String[](主方法的参数)转换为整数。

答案 1 :(得分:1)

public class Triangle {

    public static void main(String[] args){
        int a = Integer.parseInt(args[0]);
        int b = Integer.parseInt(args[1]);
        int c = Integer.parseInt(args[2]);
        boolean isTriangle;

        isTriangle = (a + b >= c) || (b + c >= a) || (a + c >= b);
        System.out.println(isTriangle);
    }

}

答案 2 :(得分:1)

由于您正在学习Java,因此开始使用它的一些面向对象方面可能是一个好主意。您可以执行以下操作:

public class Triangle{
    private int side1;
    private int side2;
    private int side3;

    public Triangle(int side1, int side2, int side3){
        this.side1=side1;
        this.side2=side2;
        this.side3=side3;
    }

    public boolean isValid(){
        return side1>0 && side2>0 && side3>0;
    }

    public boolean isTriangle(){
        return (side1+side2<=side3) 
            || (side1+side3<=side2) 
            || (side2+side3<=side1);
    }

    public static void main(String[] args){
        try{
            side1=Integer.parseInt(args[0]);
            side1=Integer.parseInt(args[0]);
            side1=Integer.parseInt(args[0]);

            Triangle t=new Triangle(side1,side2,side3);     
                if(t.isValid() && t.isTriangle())
                    System.out.println("Yes this makes a valid triangle");  

                else System.out.println("Sorry this is not a valid triangle");
        }
        catch(NumberFormatException e){
            System.out.println("Please make sure all arguments are numeric.");
        }            
    }
}

为了更进一步,您还可以扩展此类以创建RightTriangle类。由于三角形边的字段是私有的,因此您需要在Triangle类(public int getSide1(){return side1;})中为每个边添加getter方法。

public class RightTriangle extends Triangle{

    public RightTriangle(int side1, int side2, int side3){
        super(side1,side2,side3);
    }

    @Override
    public boolean isValid(){
        int a=getSide1();
        int b=getSide2();
        int c=getSide3();

        return super.isValid()
            && ((a*a + b*b = c*c)
                || (a*a + c*c = b*b)
                || (b*b + c*c = a*a));
    }

    public static void main(String[] args){
        //this is basically the same as the triangle class only now 
        //instantiate the RightTriangle class
        RightTriangle rt=new RightTriangle(side1,side2,side3);
            if(rt.isTriangle() && rt.isValid())
                System.out.println("Yes this is a valid right triangle");

            else System.out.println("sorry, this is not a right triangle");


    }

}