1、该规则可以递归地用于每个区间,为给 定的数值属性创建概念分层。3. 实验要求用Java语言实现3-4-5规则划分算法。4. 实验准备1. 了解3-4-5规则划分的具体过程2. 具体详细的算法模块用什么方法实现分析3. 对总体进行可行性的研究4. 具体的编程实现3-4-5规则划分5. 算法优点缺点优点:可以将数据分割成相对一致、看上去自然的区间缺点:需要自己确定数据来开始分割,要有一定数据分析能力5. 实验步骤CouniMINLOU-HIGHMAXt4I -S400.000 .S5XXJO.OOOI.000.000.-$2.000.0001 gOOCMJOO SSJMJO.OOOI4 MOO.Q
2、OC* .0 O $|-5400.000 _ iW.OCOl$300X)00 $200.000 -S200.00Q $100.0001 .-$1OO.HD:.SOI($0.S200.0001仔 ixwoao.11200.005S4O0.0G0Jf $400.000.$600.000 t$600.XX).SSOOXMM)| 佔,rwvr $1.000.00014SL2OO.OOO. $ 400.000 ($I/IOOjOOO $1X500.000 $1.600.000.: $14)00X)001 i$LMiX.OfrV | $2.600jD00|(53-000,000. $3.000.000|(
3、$3.000.000S4.COOXOOJ a = new ArrayList () ; / 区间的存储 public MyDant min, int max) this.min = min;this.max = max;this msd = (int) (Math pow(10, (” + max)length() - 1);this lowl = -msd;this.highl = (Integer.parsGlnt(high + ”)substring(0, 1) ) +1) * msd;a.add(new Data(lowlz highl);public void three () /
4、第三步ArrayList al = new ArrayList();aladd(a.get(0);a.removeAll (a) ;/ 清空int temp = ml.get(0).getLow();for (int i = 0; i alget(0)getHigh() temp -= msd;temp += msd / 10;a.add(new Data(alget(0).getLow() + temp, temp);public void four () / 第四步int lows = -(int) (Integer.parselnt(min + ”)substring(1,2) +1)
5、* Mathpow(10, (min + ”)length() - 1);int highs = (int) (Tnteger.pmrselnt(max + ”) .substring(0, 1) +1) * Mathpow(10, (max + ”).length() 一 1);a remove(0);a.add(0, new Data(lows, 0);a.add(new Data(a.get(2).getHigh(), highs);public void f inall () / 第五步/ 复制前个区间集 a.size ();al add(a get(i);a. removeAll (
6、a) ; / 清空区间 al. size () ; i+) / 取出没个区间并且按照 3-4-5 规则划分getInt(count(al.get (i), alget (i);/ if (!isTrue() ) /迭代/ finall ();/ System.out.printin(this printA();/ public boolean isTrue () /停止迭代的条件if ( (a.get(i) .getHigh()-a.get(i) .getLow ()100000)return true;return false;public void getlnt (int k, Data
7、d) /通过传进要划分的区间和将要划分 为k个区间int x = (d.getHigh () - d.getLow () ) / k; / 区I可的步长 k;a.add(new Data(d.getLow () + i * x, d.getLow() + (i + 1) *x);/把最后一层的区间添加到区间列表public int count (Data d) /返回下一个分区间的大小 int m = -1;switch (counts(d) case 1:case 5:case 10:m = 5;break;case 3:case 6:case 9:m = 3;case 2:case 4:c
8、ase 8:m = 4;default:/ System.outprintin(default!”);return m;public int counts (Data d) / 计算 1-10 合法 int k;k = (d.getHigh() - dgetLow() / msd; if (k = 10) return k; else k = 10 * (dgetHigh() - d.getLow() / msd;public String toString() return ”相关数据:nn + nmin=n + min + nnmax=H + max + nnlow=H + low+ ,n
9、high=n + high + Hnmsd=n + msd + nnlowl=n + lowl+ nnhighl=H + highl + n*H;public ArrayLisgetA() return a;public void setA(ArrayListDaa) this m = a;public String printA() String str = ”划分后的区间:nn; 3size ();str += a.get(i)toStirng() + Hn;return str;public static void main(String args) MyDam = new MyDa(-
10、351976, 4700896);System.out.print丄n(m);System.outprintln(mprintA();m.three ();m. four ();m.finall();System.out.printin(m.printA();7. 实验结果相关数据: min=-351976 max=4700896 low=-159867 high=1838761 msd=1000000 lowl=-1000000 highl=2000000 * 划分后的区间: (-1000000,2000000划分后的区间: (-1000000,0 (0,1000000(1000000,20
11、00000 (-4000000,0 (0,1000000(2000000.5000000 (-4000000,-3000000 (-3000000,-2000000 (-2000000,-1000000 (-1000000,0 (0,200000(200000,400000 (400000,600000) (600000,800000 (800000,1000000 (1000000,1200000 (1200000,1400000 (1400000,1600000 (1600000,1800000(1800000,2000000 (2000000,3000000 (3000000,4000000(4000000.5000000A.实验心得通过此次课程设计,加强了对3-4-5规则划分的理解,也是自己的动手能力有所 提高。但是也让我发现了自己很多的不足之处,在JAVA编码的能力上还有待提 高,希望以后能多有这样的课设让自己的能力可以提高。这一次的课程设计编码 阶段有儿个同学给了我很大的帮助,也让我知道了团队协作能大大的提高工作效 率,所以我也希望以后能有一些团队形式的锻炼。总之这次课设让我学会了很多 东西,对我有了许多的启发。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1