我一直在寻找这方面的帮助几个小时,找不到任何东西,或者我只是没有找对地方。
我正在尝试用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);
}
}
希望有些人可能会给我一个答案,或者说我指向正确的方向,这样我才能做到这一点。
答案 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");
}
}