2 oiu1010110 oiu1010110 于 2016.04.18 18:16 提问

Java 分数比较compareTo(Object obj)方法

要求:
1. 不能用分子除与分母的结果来比较大小,这样不精确。
2.分母为零分子为正数时分数为无穷大,两个无穷大的数相等,无穷大的数大于一切其他数;分母为零分子为负数时分数为负无穷大,两个负无穷大的数相等,负无穷小于一切其他数。
3. 正无穷大大于负无穷大,两个负无穷大的分数一样大,两个正无穷大的分数一样大。谢谢指导。

2个回答

caozhy
caozhy   Ds   Rxr 2016.04.18 19:45
 假设你的分数类
class fraction implements Comparable
{
public int x; //分母
public int y; //分子
public int compareTo(Object obj)
{
    fraction f2 = (fraction)f2;
        if (y < 0) { y = -y; x = -x; }
        if (f2.y < 0) { f2.y = - f2.y; f2.x = - f2.x; }
        int x1 = x * f2.y;
        int x2 = f2.x * y;
        return x1.compareTo(x2);
}
}

caozhy
caozhy 回复Koreyou: 没必要。如果x1==x2,x1.compareTo(x2)也返回0
大约 2 年之前 回复
oiu1010110
oiu1010110 回复caozhy:if(x1==x2) return 0;这样可不可以呢?
大约 2 年之前 回复
caozhy
caozhy 回复Koreyou: 一样的,我假设你定义了fraction类。如果你用的是string,那么用split分出分子分母,然后后面的代码一样
2 年多之前 回复
oiu1010110
oiu1010110 还有compareTo(x2)的参数必须要是String类型才可以啊……
2 年多之前 回复
oiu1010110
oiu1010110 还有compareTo(x2)的参数必须要是String类型才可以啊……
2 年多之前 回复
caozhy
caozhy 你的题目有问题,1/0当然小于2/0。证明2/0-1/0=1/0,1/0>0。所以2/0>1/0。你强行要让“两个负无穷大的分数一样大”,那也不难,加上一个判断分母的步骤。不过这么比较是错的。
2 年多之前 回复
oiu1010110
oiu1010110 if (y < 0) { y = -y; x = -x; } if (f2.y < 0) { f2.y = - f2.y; f2.x = - f2.x; }这两句是为什么呢?为什么要变成正数
2 年多之前 回复
oiu1010110
oiu1010110 if (y < 0) { y = -y; x = -x; } if (f2.y < 0) { f2.y = - f2.y; f2.x = - f2.x; }这两句是为什么呢?为什么要变成正数
2 年多之前 回复
caozhy
caozhy 回复Koreyou: 已经考虑了
2 年多之前 回复
oiu1010110
oiu1010110 无穷的情况怎么考虑呢
2 年多之前 回复
oiu1010110
oiu1010110 无穷的情况怎么考虑呢
2 年多之前 回复
CSDNXIAOD
CSDNXIAOD   2016.04.18 18:22

java中compareTo和compare方法之比较
java中compareTo和compare方法之比较
java中compareTo和compare方法之比较
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
interface使用
1.2.IComparable接口 Student类要实现IComparable接口,即实现该接口仅有的一个方法:int CompareTo(Object obj) 将obj进行类型转换后,比较相应的属性值, 小于:返回-1 等于:返回0 大于:返回1
JAVA之Object类所有方法
java.lang.Object下的各种方法
用JAVA编写比较两数的大小
用JAVA编写比较两数的大小。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
object与 json 相互转换工具类
CSDN上另外一篇博客的附带资源太贵了,我就整个最便宜的来造福社会吧! 内附使用说明,傻瓜式使用教学 //list 转json Gson g1 = new Gson(); List<String> list1 = new ArrayList<String>(); String str1 = g1.toJson(list1); //json 转list Gson g2 = new Gson(); List<String> list2 = g2.fromJson(str1, new TypeToken<List<String>>(){}.getType());
java动态代理和反射
java动态代理 public class HireProxy implements InvocationHandler { //被代理的真实角色 private Object obj; public HireProxy(Object obj) { super(); this.obj = obj; } //第二个参数method,被代理对象的接口方法 @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("做前置工作"); System.out.println("--------------------------"); if(args != null){ for(Object o : args){ System.out.println(o); } } System.out.println("--------------------------"); Object invoke = method.invoke(obj, args); System.out.println("做后置工作"); return invoke; } }
compareTo用法
compareTo用法compareTo用法compareTo用法compareTo用法compareTo用法compareTo用法compareTo用法
C# 把指定控件显示在最上面
多个控件时,调用SetMeTop(object obj)方法,可使控件处于最上面。别忘了添加System.Collections命名空间。
ssh框架整合
ssh框架整合完整项目 public interface BaseService { public List query(Condition condition); public void add(Object obj); public void update(Object obj); public Object queryone(Class cls, String id); public void delete(Object obj); }
Java 开发所需json的jar包,转json格式
Java 开发所需json的jar包,项目对象转json格式, Map<String,Object> map=HashMap<String,Object>(); map.put("sex","man"); toJson(map); /** * 将得到的数据以json格式进行输出,如果对象不存在则输出空字符串 * * @param obj * 要转换成json的对象 */ protected String toJson(Object obj) { String json = ""; if (obj != null) { if (isArray(obj)) { JSONArray jsonArray = JSONArray.fromObject(obj); json = jsonArray.toString(); } else { JSONObject jsonObject = JSONObject.fromObject(obj); json = jsonObject.toString(); } System.out.println(json); } return json; } /** * 判断对象是否是集合类型 * * @param obj * @return */ private boolean isArray(Object obj) { return obj instanceof Collection || obj.getClass().isArray(); }
ComparableCircle类
创建名为ComparableCircle的类,它继承自Circle类,并实现Comparable接口。画出UML图并实现compareTo方法,使其根据面积比较两个圆。编写一个测试程序求出ComparableCircle对象的两个实例中的较大者。