⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newclass.java

📁 人工智能
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;//////////////////////////////////////////////////一级属性类class classKind1{	public EnumKinds.kind1 kind1 = EnumKinds.kind1.空类;	public boolean flag = false;}// 二级属性类class classKind2{	public EnumKinds.kind2 kind2 = EnumKinds.kind2.空类;	public boolean flag = false;}// 三级属性类class classKind3{	public EnumKinds.kind3 kind3 = EnumKinds.kind3.空类;	// public boolean flag = false;	public boolean print = false;}// 名称类class className{	public EnumKinds.name name = EnumKinds.name.空类;	public boolean flag = false;}///************************************************************/////// 利用前面的四个类创建综合数据库(反向推理)  class AnimalDataBase1{	public final  int MAXSIZE = 255;	private classKind1 kind1;	private classKind2 kind2;	public classKind3[] kind3;	private int id_Kind3 = 1;	private className name;	// 构造函数	public AnimalDataBase1()    {		kind1 = new classKind1();		kind2 = new classKind2();		kind3 = new classKind3[MAXSIZE];		for (int i = 0; i < MAXSIZE; i++)        {            kind3[i] = new classKind3();        }		name = new className();	 }	// 设置一级属性	public void setKind1(EnumKinds.kind1 x)    {		if (kind1.flag == false)        {			kind1.kind1 = x;			kind1.flag = true;		}	}	// 设置二级属性	public void setKind2(EnumKinds.kind2 x)    {		if (kind2.flag == false)        {			kind2.kind2 = x;			kind2.flag = true;		}	}	// 设置三级属性	public void setKind3(EnumKinds.kind3 x)    {		if (id_Kind3 > 0 && id_Kind3 < MAXSIZE)        {			kind3[id_Kind3].kind3 = x;			kind3[id_Kind3].print = false;			id_Kind3++;		}	}	// 一号方案,为什么会失败?	public String getKind3()    {		String s = "";		for (int i = 1; i < id_Kind3; i++)        {            if (kind3[i].print = false)            {                kind3[i].print = true;                s += kind3[i].kind3.toString();            }        }		return s;	}	// 设置名称	public void setName(EnumKinds.name x)    {		if (name.flag == false)        {			name.name = x;			name.flag = true;		}	}	public classKind1 getKind1()    {		return kind1;	}	public classKind2 getKind2()    {		return kind2;	}	public className getName()    {		return name;	}	// 在三级属性中寻找匹配项	public boolean kindMatch(EnumKinds.kind3 x)    {		for (int i = 1; kind3[i].kind3 != x && i < id_Kind3; i++)        {            if (kind3[i].kind3 != EnumKinds.kind3.空类)            {                return false;            }        }		return true;	}}///************************************************************/////// 利用前面的四个类创建综合数据库//(正向推理)  class AnimalDataBase{	public final  int MAXSIZE = 255;	private classKind1 kind1;	private classKind2 kind2;	public classKind3[] kind3;	private int id_Kind3 = 1;	private className name;	// 构造函数	public AnimalDataBase()    {		kind1 = new classKind1();       //一级属性		kind2 = new classKind2();       //二级属性		kind3 = new classKind3[MAXSIZE];//三级属性		for (int i = 0; i < MAXSIZE; i++) //MAXSIZE=255        {            kind3[i] = new classKind3();        }		name = new className();    //生物名称。如:f	}	// 设置一级属性	public void setKind1(EnumKinds.kind1 x)    {		if (kind1.flag == false)        {			kind1.kind1 = x;			kind1.flag = true;		}	}	// 设置二级属性	public void setKind2(EnumKinds.kind2 x)    {		if (kind2.flag == false)        {			kind2.kind2 = x;			kind2.flag = true;		}	}	// 设置三级属性	public void setKind3(EnumKinds.kind3 x)    {		if (id_Kind3 > 0 && id_Kind3 < MAXSIZE)        {			kind3[id_Kind3].kind3 = x;			kind3[id_Kind3].print = false;			id_Kind3++;		}	}	// 一号方案,为什么会失败?	public String getKind3()    {		String s = "";		for (int i = 1; i < id_Kind3; i++)        {            if (kind3[i].print = false)            {                kind3[i].print = true;                s += kind3[i].kind3.toString();            }        }		return s;	}	// 设置名称	public void setName(EnumKinds.name x)    {		if (name.flag == false)        {			name.name = x;			name.flag = true;		}	}	public classKind1 getKind1()    {		return kind1;	}	public classKind2 getKind2()    {		return kind2;	}	public className getName()    {		return name;	}	// 在三级属性中寻找匹配项	public boolean kindMatch(EnumKinds.kind3 x)    {		for (int i = 1; kind3[i].kind3 != x && i < id_Kind3; i++)        {            if (kind3[i].kind3 != EnumKinds.kind3.空类)            {                return false;            }        }		return true;	}}/////////////////////////////////////////////////定义枚举类型,用以存储动物的各级属性class EnumKinds{	// 定义一级分类	public static enum kind1    {		空类, 哺乳动物, 鸟类动物	}	// 定义二级分类	public static enum kind2    {		空类, 食肉动物, 有蹄动物, 鸟类	}	// 定义底级属性	public static enum kind3    {		空类, 有毛发, 有长爪, 有利齿, 有羽毛, 有蹄, 有长腿,         有长颈, 能产乳, 能生蛋, 能飞行, 能游泳, 吃肉, 反刍,        眼睛前视, 黄褐色, 白色, 黑色与白色相杂, 黑色与白色,        深色斑点, 黑色条纹, 善于飞行	}	// 定义动物名称	public static enum name    {		空类, 猎豹, 老虎, 长颈鹿, 斑马, 鸵鸟, 企鹅, 海燕	}}////******************************************///////定义可以(正向)推理的推理机class Reasoning{	String name = "";      // 动物名称	String YorN = "";      // 判断	private int id_R = 0;  // 下一步推理序号	private int id_Kind3 = 1;// 要输出的三级属性的序号	public Reasoning()    {	}	// 系统介绍   private void introduce()    {		String str1;		str1 = "\nA猎豹, B老虎,C长颈鹿 , D斑马, E鸵鸟, F企鹅, G海燕\n"				+ "请输入您要验证的动物编号并按回车键结束\n:";		System.out.println(str1);	}	// 用户输入方法	private String inPut()    {		String s = "";		try        {			BufferedReader stdin = new BufferedReader(new InputStreamReader(					System.in));			s = stdin.readLine();		} catch (IOException e)        {			e.printStackTrace();		}		return s;	}	// 二号方案,三级属性输出方法。	private boolean outPut(AnimalDataBase x)    {		String str = "动物满足如下特性吗?(确认请输入‘YES’,'NO'请回车!)\n";		if (id_Kind3 < x.MAXSIZE)        {			while (x.kind3[id_Kind3].kind3 != EnumKinds.kind3.空类)            {				str += x.kind3[id_Kind3++].kind3 + ";";			}			System.out.println(str);			return true;		}		return false;	}	// 对输出的三级属性的回复做出判断	private boolean judge(AnimalDataBase x)    {		if (outPut(x) == true)        {			YorN = inPut();			if (YorN.equals("YES")) {                return true;            }			else {                return false;            }		}		return false;	}	// 请用户输入动物名称	private void step1()    {		name = inPut();         //name是字符串变量。		boolean flag = false;		while (!flag)        {			flag = true;			if (name.equals("A")) //A猎豹            {                id_R = 9;            }			else if (name.equals("B")) //B老虎            {                id_R = 10;            }			else if (name.equals("C")) //C长颈鹿            {                id_R = 11;            }			else if (name.equals("D")) //D斑马            {                id_R = 12;            }			else if (name.equals("E")) //E鸵鸟            {                id_R = 13;            }			else if (name.equals("F"))//F企鹅            {                id_R = 14;            }			else if (name.equals("G")) //G海燕            {                id_R = 15;            }			else            {				name = "";				flag = false;				System.out.println("请输入大写字母:");				name = inPut();			}		}	}	// 对用户输入动物进行推理	private void step2(AnimalDataBase x)    {//		int m1 = 1;//		int m2 = 11;//		int m3 = 21;		boolean end = false;//验证正确标志。正确时end=true		while (id_R != 0)        {			switch (id_R)            {			case 1:              {				x.setKind3(EnumKinds.kind3.有毛发);				if (judge(x))                {					id_R = 0;					end = true;				 } else {                    id_R = 2;                }				// y.R1(x);				break;			  }			case 2:            {				x.setKind3(EnumKinds.kind3.能产乳);				if (judge(x)) {                    end = true;                }				id_R = 0;				// y.R2(x);				break;			}			case 3:            {				x.setKind3(EnumKinds.kind3.有羽毛);				if (judge(x))                {					id_R = 0;					end = true;				} else {                    id_R = 4;                }				// y.R3(x);				break;			}			case 4:            {				x.setKind3(EnumKinds.kind3.能飞行);				x.setKind3(EnumKinds.kind3.能生蛋);				if (judge(x)) {                    end = true;                }				id_R = 0;				// y.R14(x);				break;			}			case 5:            {				x.setKind3(EnumKinds.kind3.吃肉);				// System.out.println(x.kind3[3].kind3);				if (judge(x)) {                    id_R = 1;                }				else {                    id_R = 6;                }				// y.R5(x);				break;			}			case 6:            {				x.setKind3(EnumKinds.kind3.有长爪);				x.setKind3(EnumKinds.kind3.有利齿);				x.setKind3(EnumKinds.kind3.眼睛前视);				if (judge(x)) {                    id_R = 1;                }				else {                    id_R = 0;                }				// y.R6(x);				break;			}			case 7:            {				x.setKind3(EnumKinds.kind3.有蹄);				if (judge(x)) {                    id_R = 1;                }				else {                    id_R = 8;                }				// y.R7(x);				break;			}			case 8:            {				x.setKind3(EnumKinds.kind3.反刍);				if (judge(x)) {                    id_R = 1;                }				else {                    id_R = 0;                }				// y.R8(x);				break;			}			case 9:            {				x.setName(EnumKinds.name.猎豹);				x.setKind3(EnumKinds.kind3.黄褐色);				x.setKind3(EnumKinds.kind3.深色斑点);				// System.out.println(x.kind3[1].kind3+x.kind3[2].kind3.toString());				if (judge(x)) {                    id_R = 5;                }				else {                    id_R = 0;                }				// y.R9(x);				break;			}			case 10:            {				x.setName(EnumKinds.name.老虎);				x.setKind3(EnumKinds.kind3.黄褐色);				x.setKind3(EnumKinds.kind3.黑色条纹);				if (judge(x)) {                    id_R = 5;                }				else {                    id_R = 0;                }				// y.R10(x);				break;			}			case 11:            {				x.setName(EnumKinds.name.长颈鹿);				x.setKind3(EnumKinds.kind3.有长腿);				x.setKind3(EnumKinds.kind3.有长颈);				x.setKind3(EnumKinds.kind3.黄褐色);				x.setKind3(EnumKinds.kind3.深色斑点);				if (judge(x)) {                    id_R = 7;                }				else {                    id_R = 0;                }				// y.R11(x);				break;			}			case 12:            {				x.setName(EnumKinds.name.斑马);				x.setKind3(EnumKinds.kind3.白色);				x.setKind3(EnumKinds.kind3.黑色条纹);				if (judge(x)) {                    id_R = 7;                }				else {                    id_R = 0;                }				// y.R12(x);				break;			}			case 13:            {				x.setName(EnumKinds.name.鸵鸟);				x.setKind3(EnumKinds.kind3.有长腿);				x.setKind3(EnumKinds.kind3.有长颈);				x.setKind3(EnumKinds.kind3.黑色与白色相杂);				if (judge(x)) {                    id_R = 3;                }				else {                    id_R = 0;                }				// y.R13(x);				break;			}			case 14:            {				x.setName(EnumKinds.name.企鹅);				x.setKind3(EnumKinds.kind3.能游泳);				x.setKind3(EnumKinds.kind3.有长颈);				x.setKind3(EnumKinds.kind3.黑色与白色);				if (judge(x)) {                    id_R = 3;                }				else {                    id_R = 0;                }				// y.R14(x);				break;			}			case 15:            {				x.setName(EnumKinds.name.海燕);				x.setKind3(EnumKinds.kind3.善于飞行);				// y.R15(x);				if (judge(x)) {                    id_R = 3;                }				else {                    id_R = 0;                }				break;			}			}// switch		}// while		// 结果判定		String str;		if (id_R == 0 && end == true) {            str = "验证成功! 您要验证的动物是" +"\""+x.getName().name+"\"" + "!";        }		else {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -