(有单个数字也有区间范围的,区间范围的:起始和结束的长度要一样比如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:
如何判断数值之间是否有冲突
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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]
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报