博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java之 ------ 可变參数和卫条件
阅读量:5966 次
发布时间:2019-06-19

本文共 1817 字,大约阅读时间需要 6 分钟。

可变參数:适用于參数个数不确定。类型确定的情况,java把可变參数当做数组处理。

                    可变參数必须位于最后一项。当可变參数个数多于一个时,必将有一个不是最后一项,所以仅仅支持有一个可变參数。

                    可变參数的书写形式如:

                                        int add(int x,int ...args){  方法体 }

                     ... 位于变量类型和变量名之间。前后有无空格都能够;

                     调用可变參数的方法时。编译器为该可变參数隐含创建一个数组,在方法体中以数组的形式訪问可变參数。

条件逻辑推断型的应用(模拟人工推理)

/* 有人邀请A,B,C,D,E,F 6个人參加一项会议,这6个人有些奇怪。由于他们有非常多要求。已知: 1)A,B两人至少有1人參加会议; 2)A,E,F 3人中有2人參加会议; 3)B和C两人一致决定。要么两人都去。要么两人都不去; 4)A,D两人中仅仅1人參加会议。 5)C,D两人中也仅仅要1人參加会议。 6)假设D不去。那么E也决定不去。 那么最后到底有哪几个人參加了会议呢? */public class Meeting {	public static void main(String[] args) {		int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0;		/*for (int a1 = 1; a1 <= 2; a1++) {			for (int a2 = 1; a2 <= 2; a2++) {				for (int a3 = 1; a3 <= 2; a3++) {					for (int a4 = 1; a4 <= 2; a4++) {						for (int a5 = 1; a5 <= 2; a5++) {							for (int a6 = 1; a6 <= 2; a6++) {							*/		//相似上面6个for		for (int i = 0; i <= 63; i++) {//二进制表示六个人( 000000 ~ 111111  )去还是不去  1表示去 ,0表示不去			a = ((i & 1) == 0) ? 0 : 1;			b = ((i & 2) == 0) ? 0 : 1;			c = ((i & 4) == 0) ?

0 : 1; d = ((i & 8) == 0) ? 0 : 1; e = ((i & 16) == 0) ? 0 : 1; f = ((i & 32) == 0) ? 0 : 1; if (fun(a, b, c, d, e, f)) { System.out.println("a= " + a + " b= " + b + " c= " + c + " d= " + d + " e= " + e + " f= " + f); } } } //统计去的人数 private static int countGo(int... args) {//可变參数 int sum = 0; for (int a : args) { if (a == 1) {//1表示去 0表示不去 sum++; } } return sum; } //判读是否符合条件 private static boolean fun(int a, int b, int c, int d, int e, int f) { // 卫条件,每一个卫条件好象一个卫兵一样,专门拦截该条件的非法结果数据。经过全部卫兵。剩下的数据就是合法的 if (!(countGo(a, b) >= 1)) { return false; } if (!(countGo(a, e, f) == 2)) { return false; } if (!(countGo(b, c) == 0 || countGo(b, c) == 2)) { return false; } if (!(countGo(a, d) == 1)) { return false; } if (!(countGo(c, d) == 1)) { return false; } if (countGo(d) == 0 && countGo(e) == 1) { return false; } return true; } } //结果:a= 1 b= 1 c= 1 d= 0 e= 0 f= 1

转载地址:http://jlmax.baihongyu.com/

你可能感兴趣的文章
Centos下基于Hadoop安装Spark(分布式)
查看>>
3D地图的定时高亮和点击事件(基于echarts)
查看>>
mysql开启binlog
查看>>
设置Eclipse编码方式
查看>>
分布式系统唯一ID生成方案汇总【转】
查看>>
并查集hdu1232
查看>>
Mysql 监视工具
查看>>
Linux Namespace系列(09):利用Namespace创建一个简单可用的容器
查看>>
博客搬家了
查看>>
Python中使用ElementTree解析xml
查看>>
jquery 操作iframe、frameset
查看>>
解决vim中不能使用小键盘
查看>>
jenkins权限管理,实现不同用户组显示对应视图views中不同的jobs
查看>>
我的友情链接
查看>>
批量删除用户--Shell脚本
查看>>
Eclipse Java @Override 报错
查看>>
linux的日志服务器关于屏蔽一些关键字的方法
查看>>
mysql多实例实例化数据库
查看>>
javascript 操作DOM元素样式
查看>>
HBase 笔记3
查看>>