java之 ------ 可变參数和卫条件
可变參数:适用于參数个数不确定。类型确定的情况,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
java之 ------ 可变參数和卫条件的更多相关文章
- java课堂练习之可变參数与卫条件
/* 有人邀请A,B,C,D,E,F 6个人參加一项会议,这6个人有些奇怪.由于他们有非常多要求,已知: 1)A,B两人至少有1人參加会议: 2)A,E,F 3人中有2人參加会议. 3)B和C ...
- java 可变參数
我们在某些特定的需求环境下,可能要对某一个方法中的參数进行一些操作,并且这些方法中的參数是不规定的,那么问题来了,我们该怎么办呢? java事实上就为我们考虑了这样的情况,那就是使用可变參数 可变參数 ...
- java 可变參数列表
Java SE5加入了可变參数列表特性 參数能够这样定义.(Object-args).可变參数用"..."来定义,args是可变參数的数组.举个样例: package sample ...
- OC可变參数的函数实现va_start、va_end、va_list的使用
一.简单介绍 我们常常在编程的时候看见类似这种代码,如图1.1 图1.1 或者是这种可变參数,如图1.2 图1.2 二.基本知识介绍 在学习怎样写这样的格式的函数前,先简介几个经常使用的宏: 下面摘自 ...
- iOS 处理方法中的可变參数
## iOS 处理方法中的可变參数 近期写了一个自己定义的对话框的demo,想模仿系统的UIAlertView的实现方式.对处理可变參数的时候,遇到了小问题,于是谷歌了一下.写下了处理问题的方法.记录 ...
- java 变长參数使用原则
1.java变长參数用...表示,如Print(String... args){ ... }; 2.假设一个调用既匹配一个固定參数方法.又匹配一个变长參数方法,则优先匹配固定參数的方法 3.假设一个 ...
- Effective JavaScript Item 21 使用apply方法调用函数以传入可变參数列表
本系列作为Effective JavaScript的读书笔记. 以下是一个拥有可变參数列表的方法的典型样例: average(1, 2, 3); // 2 average(1); // 1 avera ...
- C语言利用va_list、va_start、va_end、va_arg宏定义可变參数的函数
在定义可变參数的函数之前,先来理解一下函数參数的传递原理: 1.函数參数是以栈这样的数据结构来存取的,在函数參数列表中,从右至左依次入栈. 2.參数的内存存放格式:參数的内存地址存放在内存的堆栈段中, ...
- 增强for循环、Map接口遍历、可变參数方法
增强for循环 1.for循环能做得事情.增强for循环大部分都能做(假设要想获得下标的时候就必须使用简单for循环了) 2.增强for有时候可以方便的处理集合遍历的问题,可是集合的标准遍历是使用迭代 ...
随机推荐
- [转]Java动态代理
动态代理在Java中有着广泛的应用,比如Spring AOP,Hibernate数据查询.测试框架的后端mock.RPC,Java注解对象获取等.静态代理的代理关系在编译时就确定了,而动态代理的代理关 ...
- Git 提交更改
Jerry 已经提交的更改,他想纠正他的最后一次提交,在这种情况下,git 的修改将帮助操作.最后提交修改操作的变化,包括提交信息,它创建新的提交ID. 修改操作之前,他会检查提交日志. [jerry ...
- display:box的兼容写法
.box{ /* display */ display: -webkit-box; display: -moz-box; display: -ms-flexbox; display: -o-box; ...
- Visual Studio 2008 调试运行Bug记录
1.VS2008LINK : fatal error LNK1000: Internal error during IncrBuildImage (1). 打开要编译的项目(2). 在项目菜单中打开属 ...
- Android WiFi 日志记录(ASSOC_REJECT)
记录Android N关联拒绝之后的相关的log. 10-26 20:35:35.844 2215 2215 D wpa_supplicant: * bssid_hint=44:48:c1:d6:57 ...
- Luhn算法检验和验证
一.Luhn公式介绍 Luhn公式是一种广泛使用的系统,用于对标识号进行验证.它根据原始标识号,把每隔一个数字的值扩大一倍.然后把各个单独数字的值加在一起(如果扩大一倍后的值为2个数字,就把这两个数字 ...
- (转)ffmpeg 从mp4上提取H264的nalu
出自:http://blog.csdn.net/gavinr/article/details/7183499 1.获取数据ffmpeg读取mp4中的H264数据,并不能直接得到NALU,文件中也 ...
- Java线程创建的两种方式
java多线程总结一:线程的两种创建方式及优劣比较 (一)---之创建线程的两种方式 java实现多线程的两种方法的比较
- sqlite学习笔记1:编译数据库
首先说下我使用的是Linux环境 一 下载源代码 官网下载:点这里 二 编译 1 解压 下载完毕之后通常会在当前用户的"下载"文件夹中,首先cd到下载文件夹,然后创建一个文件件.用 ...
- mothur summary.seqs 统计fasta文件中每条序列的长度
在介绍summary.seqs的用法之前,我们首先需要搞清楚两个概念: 1)ambiguous bases 中文叫做模糊碱基,对于DNA序列来说,只有ATCG 4种碱基,在IUPAC定义的碱基标准中, ...