3

私はこれについて数時間助けを求めてきましたが、何も見つからないか、適切な場所を探していないだけかもしれません.

コマンドライン引数として3つの正の整数を取り、それらのいずれかが他の2つの合計以上である場合はTRUE、そうでない場合はFALSEを出力する単純なプログラムをJavaで作成しようとしています。

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

Java を学んでいるので、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");


    }

}
于 2012-09-01T19:05:30.023 に答える
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

整数は 3 つしかないため、各整数を個別にテストします。

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

ScannerIOに関しては、クラスを使用できます。

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

覚えておいてください: import java.util.Scanner.

EDIT:コマンドライン引数として整数を取りたいと思ったのを見ました。その場合Integer.parseInt(..)、引数(メインメソッドの引数であるのStringコンポーネント)を整数に変換するために使用します。String[]

于 2012-09-01T14:10:05.243 に答える