设计一个接口,返回一组三角形的有序的数据集合
2015-07-23 10:41
465 查看
假设类型为string的一组数据格式如下:
[{“a”:”1”,”b”:”1”,”c”:”3”},{“a”:”2”,”b”:”1”,”c”:”2”},{“a”:”5”,”b”:”9”,”c”:”3”},…… ,{“a”:”3”,”b”:”4”,”c”:”5”},{“a”:”6”,”b”:”3”,”c”:”3”}]
请您根据以上的数据,设计一个接口,返回一组三角形的有序的数据集合,排序规则是:等边三角形->等腰三角形->普通三角形的数据集。请用面向对象的设计,来实现这个程序。
1、定义一个接口:
枚举:
[{“a”:”1”,”b”:”1”,”c”:”3”},{“a”:”2”,”b”:”1”,”c”:”2”},{“a”:”5”,”b”:”9”,”c”:”3”},…… ,{“a”:”3”,”b”:”4”,”c”:”5”},{“a”:”6”,”b”:”3”,”c”:”3”}]
请您根据以上的数据,设计一个接口,返回一组三角形的有序的数据集合,排序规则是:等边三角形->等腰三角形->普通三角形的数据集。请用面向对象的设计,来实现这个程序。
1、定义一个接口:
public interface ITriangleService { string GetTriangle(string jsonStr); }2、接口实现:
<pre name="code" class="csharp">public class TriangleService : ITriangleService { private List<Triangle> tiangles; private string triangleStr; public string GetTriangle(string jsonStr) { if (!string.IsNullOrWhiteSpace(jsonStr)) { tiangles = new List<Triangle>(); List<ThreeSide> threeSide = new List<ThreeSide>(); threeSide = JsonConvert.DeserializeObject<List<ThreeSide>>(jsonStr); //threeSide = JSON.ToObject<List<ThreeSide>>(jsonStr); if (threeSide.Count > 0) { Triangle equilateral = new Triangle(TriangleCategory.Equilateral,new List<ThreeSide>()); //equilateral Triangle Triangle isosceles = new Triangle(TriangleCategory.Isosceles, new List<ThreeSide>()); //isosceles Triangle Triangle right = new Triangle(TriangleCategory.Right, new List<ThreeSide>()); //right Triangle Triangle ordinary = new Triangle(TriangleCategory.Ordinary, new List<ThreeSide>()); //ordinary Triangle Triangle notTriangle = new Triangle(TriangleCategory.Not, new List<ThreeSide>()); //notTriangle foreach(ThreeSide ts in threeSide) { if (JudgeTriangle(ts)) //true:is a triangle { if (JudgeEquilateral(ts)) equilateral.ThreeSide.Add(ts); else if (JudgeIsosceles(ts)) isosceles.ThreeSide.Add(ts); else if (JudgeRight(ts)) right.ThreeSide.Add(ts); else ordinary.ThreeSide.Add(ts); } else//not a triangle { notTriangle.ThreeSide.Add(ts); } } if (equilateral.ThreeSide.Count()>0) tiangles.Add(equilateral); if (isosceles.ThreeSide.Count() > 0) tiangles.Add(isosceles); if (right.ThreeSide.Count() > 0) tiangles.Add(right); if (ordinary.ThreeSide.Count() > 0) tiangles.Add(ordinary); if (notTriangle.ThreeSide.Count() > 0) tiangles.Add(notTriangle); triangleStr = JsonConvert.SerializeObject(tiangles); //triangleStr = JSON.ToJSON(tiangles); } else { triangleStr = "Json format is error!"; } } else { triangleStr = "Json is null!"; } return triangleStr; } private bool JudgeRight(ThreeSide ts) { return ts.c * ts.c + ts.a * ts.a == ts.b * ts.b || ts.c * ts.c + ts.b * ts.b == ts.a * ts.a || ts.a * ts.a + ts.b * ts.b == ts.c * ts.c; } private bool JudgeIsosceles(ThreeSide ts) { return (ts.a == ts.b || ts.c == ts.b || ts.a == ts.c) && !JudgeEquilateral(ts); } private bool JudgeEquilateral(ThreeSide ts) { return ts.c == ts.a && ts.c == ts.b && ts.a == ts.c; } private bool JudgeTriangle(ThreeSide ts) { return ts.c + ts.a > ts.b && ts.c + ts.b > ts.a && ts.a + ts.b > ts.c; } }
</pre><pre name="code" class="csharp"><pre name="code" class="csharp">3、在接口中用到的类和枚举
[Serializable] public class Triangle { private TriangleCategory category; List<ThreeSide> threeSide; public Triangle(TriangleCategory c,List<ThreeSide> ts) { this.Category = c; this.ThreeSide = ts; } public TriangleCategory Category { get { return category; } set { category = value; } } public List<ThreeSide> ThreeSide { get { return threeSide; } set { threeSide = value; } } } [Serializable] public class ThreeSide { public int a { get; set; } public int b { get; set; } public int c { get; set; } }
枚举:
<pre name="code" class="csharp"> public enum TriangleCategory { Equilateral, Isosceles,Right,Ordinary,Not }
</pre><pre>
相关文章推荐
- 一步一步跟我学易语言之第二个易程序菜单设计
- 交换机升级排障实例
- 基于逻辑运算的简单权限系统(原理,设计,实现) VBS 版
- C#中设计、使用Fluent API
- sql2008启动代理未将对象应用到实例解决方案
- 基于逻辑运算的简单权限系统(原理,设计,实现) VBS 版
- JavaScript 组件之旅(一)分析和设计
- 初识JQuery 实例一(first)
- 一个小助手批处理实例代码
- XStream使用方法总结附实例代码
- C# 事件的设计与使用深入理解
- asp.net得到本机数据库实例的两种方法代码
- 大型网站设计注意事项大全
- Android中的脑残设计总结
- C++多继承同名隐藏实例详细介绍
- PHP入门学习的几个不错的实例代码
- JSP发送邮件实例
- C#中的IEnumerable简介及简单实现实例
- PHP中的流(streams)浅析
- PHP curl使用实例