2014-04-06 11 views
2

我做TypeofTriangle.java用Java和JUnit实现三角形类型?

public class TypeofTriangle { 

public static int triangle(int a, int b, int c) { 
    if (a<b && b<c && (a*a)+(b*b)>(c*c)) { 
     System.out.println("Triangular Taper"); 
    } else if(a<b && b<c && (a*a)+(b*b)=(c*c)) { 
      System.out.println("Right Triangle"); 
     } else if (a<b && b<c && (a*a)+(b*b)<(c*c)) { 
      System.out.println("Blunt Triangle");} 
    } 
} 

我的类测试TypeofTriangleTest.java

import junit.framework.*; 

public class TypeofTriangleTest extends TestCase { 
    public TypeofTriangleTest(String name) { 
     super(name); 
    } 

public void testSimple() { 
    assertEquals("Triangular Taper", TypeofTriangle.triangle(6,8,10)); 
    } 
} 

制成,但是,当我运行的类测试,有一个错误。它说

java:6: operator && cannot be applied to boolean,int 
     } else if(a<b && b<c && (a*a)+(b*b)=(c*c)) { 

那么我该怎么办?嗯,我对TypeofTriangle.java中的return语句感到困惑,因为我想要返回System.out.println的结果,如何使它工作?

+0

你的意思是使用'='还是'=='?两者有什么区别? –

+0

我的意思是(a * a)+(b * b)与(c * c)相同的结果@SotiriosDelimanolis – ulaaaan

+0

这并不回答我的问题。回答我的问题,你会得到你的答案。 –

回答

2

您可以通过修改本作如下更正:

else if(a<b && b<c && ((a*a)+(b*b)==(c*c))) 

返回的东西,我会类型转换成字符串:

public class TypeofTriangle { 

    public static String triangle(int a, int b, int c) { 
     if (a<b && b<c && (a*a)+(b*b)>(c*c)) { 
      return "Triangular Taper"; 
     } else if(a<b && b<c && ((a*a)+(b*b)==(c*c))) { 
      return "Right Triangle"; 
     } else if (a<b && b<c && (a*a)+(b*b)<(c*c)) { 
      return "Blunt Triangle"; 
     } return "Not a triangle"; 
    } 
} 
+0

好吧它已完成,它的工作谢谢你嘿,还有一个问题,任何想法的变量返回语句?因为当我编译它时,我忘了声明return语句,而我想返回的结果是System.out.println – ulaaaan

+0

@ulaaaan你想返回什么? – Richard

+0

我想返回“三角锥形”,“右三角”或“钝三角形”。取决于满足哪个条件。 – ulaaaan

1

b<c && (a*a)+(b*b)=(c*c)相当于b<c && c*c(任务返回结果在Java中)

因此编译器会警告不兼容的操作数:booleanint

正如@Richard写的,用相同的运算符==替换=,因此返回boolean

顺便说一句,你可以重构你的代码,因为这:

if(a<b && b<c) { 
    if((a*a)+(b*b)>(c*c)) 
    return "Triangular Taper"; 
    else if((a*a)+(b*b)==(c*c)) 
    return "Right Triangle"; 
    return "Blunt Triangle" //indeed, if it's not superior nor equal, it's surely inferior, explicit condition is useless. 
} 
return "my default value" //or throws a relevant exception 
+0

我试过了,但它需要int hmm – ulaaaan

+0

'int'对你的值没有意义,把返回类型改为'String'。 – Mik378

1

尝试是这样的:

public class TypeofTriangle 
{ 

    public static String triangle(int a, int b, int c) { 
     if (a<b && b<c && ((a*a)+(b*b))>(c*c)) { 
      return "Triangular Taper"; 
     } else if(a<b && b<c && ((a*a)+(b*b))==(c*c)) { 
      return "Right Triangle"; 
     } else if (a<b && b<c && ((a*a)+(b*b))<(c*c)) { 
      return "Blunt Triangle"; 
     } 
     return "no triangle"; 
    } 
} 

为了比较使用==而不仅仅是=。而不是写作(a * a)+(b * b)将其包含在括号内((a * a)+(b * b))。

1

你的TypeofTriangle类应该有一个编译错误。不兼容的操作数:boolean与int。基本上你试图比较整数和布尔值。使用==运算符而不是=运算符。