一道面试题,语言不限,用例稍后补上,大家给出最好的解决方法

jeffsui 发布于 2012/03/31 09:05
阅读 424
收藏 0
Write me a function that receives three integer inputs for the lengths of the sides of a triangle and returns one of four values to determine the triangle type (1=scalene, 2=isosceles, 3=equilateral, 4=error). Generate test cases for the function assuming another developer coded the function .
public class MyTriangle {
	private static final int SCALENE=1;//不等边三角形
	private static final int ISOSCELES=2;//等腰三角形
	private static final int EQUILATERAL=3;//等边三角形
	private static final int ERROR=4;//不能构成三角形,错误的输入
	/**
	 * 懒得变大小写
	 * @param str
	 * @return
	 */
	public static String toUpper(String str){
		
		return str.toUpperCase();
	}
	/**
	 * 判断三角形类型的方法
	 * @param x 
	 * @param y
	 * @param z
	 * @return 返回三角形类型
	 */
	public static int isTriangle(int x,int y, int z){
		//首先判断是否构成三角形
		if(x+y>z||x+z>y||y+z>x){
			//判断只要两边相等就是等腰三角形
			if (x==y||y==z||x==z) {
				//三边都相等就是等边三角形
				if(x==y&&y==z&&x==z){
					
					return EQUILATERAL;
				}
				//否则就是等腰三角形
				else{
					return ISOSCELES;
					
				}
			}
			//两边不相等就是非等边三角形
			else{
				
				return SCALENE;
				
			}
			
		}
		else{
			return ERROR;
		}
		
	}
   public static void main(String[] args) {
	 /*  String str="error";
	  System.out.println(toUpper(str)); */
   
}
}


以下是问题补充:

@jeffsui:我先自己贴个,献丑了! (2012/03/31 09:06)
加载中
0
jeffsui
jeffsui
哎,写错了一个最重要的条件,丢人丢大了!写用例的时候,自己给自己测出来了!
if(x+y>z&&x+z>y&&y+z>x)

six
six
@jeffsui : 对的,是我没想清楚
jeffsui
jeffsui
@six : 两边之和大于第三边,已经包含了<=0的情况。不信你可以测
jeffsui
jeffsui
恩,我写用例的时候测出来了。
six
six
没判断负数情况
返回顶部
顶部