gpt4 book ai didi

java - 检查 Java 中的三角形类型

转载 作者:行者123 更新时间:2023-12-01 17:54:39 25 4
gpt4 key购买 nike

我不知道我的代码有什么问题,我想我的 if 语句有问题!请检查下面的代码;

<小时/>
package triangle2;
import java.util.*;
public class Triangle2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter the sides of Triangle");
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
if (a <= 0 || b <= 0 || c <= 0)
System.out.println("InvalidInput");
if(a >= (b+c) || c >= (b+a) || b >= (a+c) )
System.out.println("Not a Triangle");
if(a==b && b==c)
System.out.println("Equilateral Triangle");
else if (((a * a) + (b * b)) == (c * c) || ((a * a) + (c * c)) == (b * b) || ((c * c) + (b * b)) == (a * a))
System.out.println("Right Triangle");
else if(a!=b && b!=c && c!=a)
System.out.println("Scalene Triangle");
else if ((a==b && b!=c ) || (a!=b && c==a) || (c==b && c!=a))
System.out.println("Isosceles Triangle");
}
}

另外,我尝试了以下方法,但仍然无法解决!我创建了一个方法来检查三角形,然后我在主类上有一个来自 Triangle 类的对象,但仍然如此。我认为它来自 if 和 elseif。 封装三角形; 导入java.util.*;

class Triangle {
int a,b,c;

public Triangle(){
Scanner sc = new Scanner(System.in);
System.out.println("Enter the sides of Triangle");
try{
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
}
catch(InputMismatchException ime){
System.out.println("Error: your value must be an integer!");
}
if (a <= 0 || b <= 0 || c <= 0)
System.out.println("InvalidInput");
}

public void CheckTriangle(){
int triType = 0;
if(a >= (b+c) || c >= (b+a) || b >= (a+c) )
System.out.println( "Not a Triangle");
else if(a==b && b==c)
System.out.println( "Equilateral Triangle");
else if (((a * a) + (b * b)) == (c * c) || ((a * a) + (c * c)) == (b * b) || ((c * c) + (b * b)) == (a * a))
System.out.println( "Right Triangle");
else if(a!=b && b!=c && c!=a)
System.out.println( "Scalene Triangle" );
else if ((a==b && b!=c ) || (a!=b && c==a) || (c==b && c!=a))
System.out.println( "Isosceles Triangle");
}

public static void main(String[] args) {
Triangle t=new Triangle();
t.CheckTriangle();
}
}

最佳答案

你的程序是正确的,它在每次测试时打印“不是三角形”的原因是因为你在找到无效三角形后没有停止它,这应该对你有用:

if(a<=0 || b<=0 || c<=0)
System.out.println("InvalidInput");
else if(a>=(b+c) || c>=(b+a) || b>=(a+c))
System.out.println("Not a Triangle");
else if(a==b && b==c)
System.out.println("Equilateral Triangle");
else if(((a*a)+(b*b))==(c*c) || ((a*a)+(c*c))==(b*b) || ((c*c)+(b*b))==(a*a))
System.out.println("Right Triangle");
else if(a!=b && b!=c && c!=a)
System.out.println("Scalene Triangle");
else if(a==b || c==a || c==b)
System.out.println("Isosceles Triangle");

注意:我稍微优化了最后一个条件,因为您使用的是 if/else,某些条件已经过测试,并且此时将始终为 true程序的。
例如:在 (a==b && b!=c ) 中,条件 b!=c 已经在前面的情况下得到了验证(“不等边三角形”测试)。

编辑:

要确保输入是数字,只需将代码放在 Try/Catch block 中即可:

System.out.println("Enter the sides of Triangle");
try
{
int a=sc.nextInt();
int b=sc.nextInt();
int c=sc.nextInt();
if(a<=0 || b<=0 || c<=0)
System.out.println("InvalidInput");
else if(a >= (b+c) || c >= (b+a) || b >= (a+c))
System.out.println("Not a Triangle");
else if(a==b && b==c)
System.out.println("Equilateral Triangle");
else if(((a*a)+(b*b))==(c*c) || ((a*a)+(c*c))==(b*b) || ((c*c)+(b*b))==(a*a))
System.out.println("Right Triangle");
else if(a!=b && b!=c && c!=a)
System.out.println("Scalene Triangle");
else if(a==b || c==a || c==b)
System.out.println("Isosceles Triangle");
} catch(Exception e)
{
System.out.println("Error: enter a number!");
}

测试

enter image description here

关于java - 检查 Java 中的三角形类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60741872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com