inotgaoshou 2013-08-30 15:15
浏览 200
已采纳

如何判断数值之间是否有冲突

(有单个数字也有区间范围的,区间范围的:起始和结束的长度要一样比如100-600,但1-50就不行,要改为01-50)
要比较数字有没冲突
数字可以是一个的或是范围的,比较5,6-9
那么8就跟上面的冲突了
如果11-14,那么13-19也不行,因为有交叉了。
现在问题是如果有这样的数字 1,3,5,6-9,8,120-150,130-180,怎么判断有冲突,冲突的有哪些?谢谢! :oops:

  • 写回答

3条回答 默认 最新

  • zyn010101 2013-08-31 10:39
    关注

    [code="java"]
    package com.chinahrt.zyn.iteye;

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;

    public class NumTest {
    public static class StringNum implements Comparable{
    private String s;
    private Integer first;
    private Integer last;
    public StringNum (String s){
    this.s = s;
    String str[] = s.split("-");
    if(str.length>1){
    first = Integer.valueOf(str[0]);
    last = Integer.valueOf(str[1]);
    }else{
    first = Integer.valueOf(str[0]);
    last = 0;
    }

        }
    
        public int compareTo(Object o) {
            StringNum sn = (StringNum)o;
            if(first>sn.first){
                return 1;
            }else if(first.equals(sn.first)){
                return 0;
            }else{
                return -1;
            }
        }
    
    }
    public static void testUnit(List<StringNum> list){
        Collections.sort(list);
        for(int i=0;i<list.size();i++){
            StringNum s = list.get(i);
        //  System.out.println(s.s);
            if(s.last>0){
                for(int j=i+1;j<list.size();j++){
                    StringNum s1 = list.get(j);
                    if(s.last>=s1.first){
                        System.out.println(s.s+"和"+s1.s+"冲突!");
                    }
                }
            }
        }
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        List<StringNum> list = new ArrayList<StringNum> ();
        list.add(new StringNum("1"));
        list.add(new StringNum("3"));
        list.add(new StringNum("5"));
        list.add(new StringNum("6-9"));
        list.add(new StringNum("8"));
        list.add(new StringNum("120-150"));
        list.add(new StringNum("130-180"));
        list.add(new StringNum("001-010"));
        list.add(new StringNum("0001-0010"));
        testUnit(list);
    }
    

    }

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿