当前位置: 首页 > 知识库问答 >
问题:

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

桂丰
2023-03-14

我已经在这方面寻求帮助几个小时了,但找不到任何帮助,或者我只是找不到合适的地方。

我试图用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个答案

杜浩壤
2023-03-14

既然您正在学习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");


    }

}
微生俊
2023-03-14

我只想单独测试每个整数,因为其中只有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();

记住:<代码>导入java。util。扫描仪。

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

伏建修
2023-03-14
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);
    }

}
 类似资料:
  • 我正在尝试编写一个购物清单程序,用户在购物清单上输入相应价格的项目。我对购物清单上的商品使用了一个字符串数组,对价格使用了一个双数组。最后,程序应该打印出最贵的项目和最便宜的项目。 为此,我制作了价格数组的副本。然后使用<code>数组对原始价格数组进行排序。sort(),因此它按升序重新排列。之后,我使用for循环将重复的价格数组与已排序的原始数组进行比较,当重复数组中的值与已排序数组中的最低/

  • 我试图创建一个表达式验证方法,以确保传递到函数中的帐号是否有效。如果是,则返回true,如果为false,则返回false。 但是我正在经历一个错误: 我已经看了一些堆栈溢出问题,但我似乎无法弄清楚我在代码中做错了什么。 代码: 我从https://www.freeformatter.com/java-regex-tester.html#ad-output

  • 问题内容: 我正在尝试编写代码以比较两个数组。在第一个数组中,我输入了自己的数字,但是在第二个数组中,输入了输入文件中的数字。该数组的大小由文件中的第一个数字确定,而第一个数组的大小始终为10。两个数组以及数字的长度必须相同。 我的代码如下: 问题答案:

  • 问题内容: 在Java中整数比较是棘手的,因为和表现不同。我明白了。 但是,如本示例程序所示, (第4行)的 行为不同于 (第3行) 。为什么是这样?? 结果 问题答案: 从JLS 如果装箱的值p为true,false,字节或\ u0000到\ u007f范围内的char或-128到127(含)之间的整数或短数,则令r1和r2为p的任何两次拳击转换。r1 == r2总是这样。 理想情况下,将给定的

  • 我有一个充满整数的列表: 现在我想将最高分数与每个分数进行比较,看看哪个分数最高。直觉上,我试着这样做: 然而 所有人都告诉我错误: Compariable和int操作数类型不兼容 然而,这似乎是可行的: 那怎么可能呢? 为什么Java允许将int设置为集合。max(集合),但不允许将int与集合进行比较。最大值(集合)?