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]);
}
}