推荐书籍、茶叶分级

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

	}

}

  

原文地址:https://www.cnblogs.com/niuxiao12---/p/7256289.html