3

几个小时以来,我一直在寻求帮助,但找不到任何东西,或者我只是没有在正确的地方寻找。

我正在尝试在 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);
    }

}

希望其中一些人可能会给我一个答案或一些能指出我正确方向的东西,以便我能做到这一点。

4

3 回答 3

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[]即 main 方法的参数的组件)转换为整数。

于 2012-09-01T14:10:05.243 回答
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);
    }

}
于 2012-09-01T18:37:00.973 回答
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 类中为每个边添加 getter 方法 (public int getSide1(){return side1;})。

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");


    }

}
于 2012-09-01T19:05:30.023 回答