package com.zhiyou100.shop; import java.util.ArrayList; public class Test { public static void main(String[] args) { ArrayList<String> aList0 = new ArrayList<String>(); aList0.add("射雕英雄传"); aList0.add("明朝那些事"); aList0.add("数据挖掘导论"); ArrayList<String> aList1 = new ArrayList<String>(); aList1.add("数据挖掘导论"); aList1.add("天龙八部"); ArrayList<String> aList2 = new ArrayList<String>(); aList2.add("天龙八部"); aList2.add("Java从入门到放弃"); ArrayList<String> aList4 = new ArrayList<String>(); aList4.add("明朝那些事"); aList4.add("Java从入门到放弃"); aList4.add("数据挖掘导论"); ArrayList<Double> aDoubles = new ArrayList<Double>(); aDoubles.add(semblance(aList0, aList4)); aDoubles.add(semblance(aList1, aList4)); aDoubles.add(semblance(aList2, aList4)); ArrayList[] aLists = {aList0,aList1,aList2}; int i; double max = aDoubles.get(0); int maxIndex = 0; // 遍历求出最大的近似值,相似度 for (i = 0; i < aDoubles.size(); i++) { double d = aDoubles.get(i); if (max < aDoubles.get(i)) { max = d; maxIndex = i; } } ArrayList<String> books = book(aList4, aLists[maxIndex]); System.out.println(books); } // 根据两个参数 购买记录 1 和 购买记录 2,返回相似度 public static double semblance(ArrayList<String> aList1, ArrayList<String> aList2) { ArrayList<String> arrayList = new ArrayList<String>(); for (int i = 0; i < aList1.size(); i++) { for (int j = 0; j < aList2.size(); j++) { if (aList1.get(i).equals(aList2.get(j))) { arrayList.add(aList1.get(i)); } } } double i = arrayList.size() / Math.sqrt(aList1.size() * aList2.size()); return i; } // 返回不同的书 public static ArrayList<String> book(ArrayList<String> aList1, ArrayList<String> aList2) { ArrayList<String > arrayList = new ArrayList<String>(); for (int i = 0; i < aList1.size(); i++) { for (int j = 0; j < aList2.size(); j++) { if (!aList1.get(i).equals(aList2.get(j))) { arrayList.add(aList2.get(j)); return arrayList; } } } return null; } }
package com.zhiyou100.demo2; import java.util.Scanner; public class Demo2 { public static void main(String[] args) { // 形状shape 色泽colorAndLustre 净度cleanLiness 汤色colourOfTea // 香气aroma 滋味taste 叶底bottomLeaves String array[] = { "形状", "色泽", "净度", "汤色", "香气", "滋味", "叶底" }; double arr[][] = { { 1, 0.9, 0.9, 0.9, 1, 1, 0.9 }, { 0.9, 0.8, 0.9, 0.9, 0.9, 0.9, 0.8 }, { 0.8, 0.7, 0.9, 0.8, 0.8, 0.7, 0.7 }, { 0.6, 0.5, 0.7, 0.6, 0.7, 0.7, 0.6 }, { 0.5, 0.4, 0.5, 0.5, 0.6, 0.6, 0.4 }, { 0.4, 0.3, 0.5, 0.4, 0.5, 0.5, 0.4 }, { 0.3, 0.2, 0.5, 0.2, 0.3, 0.3, 0.2 } }; // System.out.println(arr.length); Scanner scanner = new Scanner(System.in); double[] standards = new double[7]; double[] r = new double[7]; double a = 0; double min; double b = 0; double sum = 0; for (int j = 0; j < array.length; j++) { System.out.print("请您输入您要查询的茶叶的" + array[j] + "参数: "); double number = scanner.nextDouble(); standards[j] = number; } for (int i = 0; i < arr.length; i++) { for (int k = 0; k < arr.length; k++) { if (arr[i][k] > standards[k]) { min = standards[k]; } else { min = arr[i][k]; } sum = arr[i][k] + standards[k]; a += min; b += sum; // System.out.println(a); } r[i] = 2 * a / b; System.out.println(r[i]); } double max = r[0]; int maxIndex = 0; for (int i = 0; i < r.length; i++) { double d = r[i]; if (max < d) { max = d; maxIndex = i; } } String array1[] = { "特一级", "特二级", "特三级", "一级", "二级", "三级", "四级" }; System.out.println("这个茶叶属于的等级为:" + array1[maxIndex]); } }
package com.zhiyou100.demo2; import java.util.Scanner; public class Demo3 { public static void main(String[] args) { String array[] = { "形状", "色泽", "净度", "汤色", "香气", "滋味", "叶底" }; double arr[][] = { { 1, 0.9, 0.9, 0.9, 1, 1, 0.9 }, { 0.9, 0.8, 0.9, 0.9, 0.9, 0.9, 0.8 }, { 0.8, 0.7, 0.9, 0.8, 0.8, 0.7, 0.7 }, { 0.6, 0.5, 0.7, 0.6, 0.7, 0.7, 0.6 }, { 0.5, 0.4, 0.5, 0.5, 0.6, 0.6, 0.4 }, { 0.4, 0.3, 0.5, 0.4, 0.5, 0.5, 0.4 }, { 0.3, 0.2, 0.5, 0.2, 0.3, 0.3, 0.2 } }; Scanner scanner = new Scanner(System.in); double[] standards = new double[7]; double[] r = new double[7]; double a = 0; double min; double c = 0; double sum = 0; for (int j = 0; j < array.length; j++) { System.out.print("请您输入您要查询的茶叶的" + array[j] + "参数: "); double number = scanner.nextDouble(); standards[j] = number; } for (int i = 0; i < arr.length; i++) { for (int k = 0; k < arr.length; k++) { if (arr[i][k] > standards[k]) { min = standards[k]; } else { min = arr[i][k]; } sum = Math.sqrt(arr[i][k] * standards[k]); a += min; c += sum; // System.out.println(a); } r[i] = a / c; System.out.println(r[i]); } double max = r[0]; int maxIndex = 0; for (int i = 0; i < r.length; i++) { double d = r[i]; if (max < d) { max = d; maxIndex = i; } } String array1[] = { "特一级", "特二级", "特三级", "一级", "二级", "三级", "四级" }; System.out.println("这个茶叶属于的等级为:" + array1[maxIndex]); } }