java课堂练习之可变參数与卫条件
/*
有人邀请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也决定不去。
那么最后到底有哪几个人參加了会议呢?
*/
可变參数必须位于最后一项。
当可变參数个数多于一个时。必将有一个不是最后一项。所以仅仅支持有一个可变參数。
可变參数的书写形式如:
void a(boolean a,int ...args){ 方法体 }
1)必须是三点;
2)... 位于变量类型和变量名之间,前后有无空格都能够。
3)可变參数的应用实际上是java虚拟机动态的开了一个数组;
4)三点后不能再加其它东西。
package cn.hncu.p37.meeting; public class Meeting1 {
public static void main(String[] args) {
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++) {
if (ok(a1, a2, a3, a4, a5, a6)) {
System.out.println("a1--"+a1+
"\na2--"+a2+
"\na3--"+a3+
"\na4--"+a4+
"\na5--"+a5+
"\na6--"+a6
);
break;
}
}
}
}
}
}
}
//相似上面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 boolean ok(int a1, int a2, int a3, int a4, int a5, int a6) {
if (!(countGo(a1, a2) >= 1)) {// A,B两人至少有1人參加会议。
return false;
}
if (!(countGo(a1, a5, a6) == 2)) {// A,E,F 3人中有2人參加会议;
return false;
}
if (!(countGo(a2, a3) == 2 || countGo(a2, a3) == 0)) {// B和C两人一致决定,要么两人都去,要么两人都不去;
return false;
}
if (!(countGo(a1, a4) == 1)) {// A,D两人中仅仅1人參加会议。
return false;
}
if (!(countGo(a3, a4) == 1)) {// C,D两人中也仅仅要1人參加会议;
return false;
}
if (countGo(a4) == 0 && countGo(a5) == 1) {// 假设D不去,那么E也决定不去。
return false;
}
return true;
} private static int countGo(int... mee) {
int count = 0;
for (int me : mee) {
if (me == 1) {
count++;
}
}
return count;
} }
java课堂练习之可变參数与卫条件的更多相关文章
- java之 ------ 可变參数和卫条件
可变參数:适用于參数个数不确定.类型确定的情况,java把可变參数当做数组处理. 可变參数必须位于最后一项.当可变參数个数多于一个时,必将有一个不是最后一项,所以仅仅支持有一个可变參数. 可变參数的书 ...
- java 可变參数列表
Java SE5加入了可变參数列表特性 參数能够这样定义.(Object-args).可变參数用"..."来定义,args是可变參数的数组.举个样例: package sample ...
- java 可变參数
我们在某些特定的需求环境下,可能要对某一个方法中的參数进行一些操作,并且这些方法中的參数是不规定的,那么问题来了,我们该怎么办呢? java事实上就为我们考虑了这样的情况,那就是使用可变參数 可变參数 ...
- OC可变參数的函数实现va_start、va_end、va_list的使用
一.简单介绍 我们常常在编程的时候看见类似这种代码,如图1.1 图1.1 或者是这种可变參数,如图1.2 图1.2 二.基本知识介绍 在学习怎样写这样的格式的函数前,先简介几个经常使用的宏: 下面摘自 ...
- iOS 处理方法中的可变參数
## iOS 处理方法中的可变參数 近期写了一个自己定义的对话框的demo,想模仿系统的UIAlertView的实现方式.对处理可变參数的时候,遇到了小问题,于是谷歌了一下.写下了处理问题的方法.记录 ...
- 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有时候可以方便的处理集合遍历的问题,可是集合的标准遍历是使用迭代 ...
- Printf可变參数使用
參考文档: http://bbs.csdn.net/topics/70288067 Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源 本文的二 ...
随机推荐
- 提问:"~"运算符
本人有一段代码关于"~"运算符 public class m{ public static void main(String[] args){ int x=~5; System.o ...
- Flex里的命名空间,fx、mx、s【转】
Flex 4带给我们的,是全新的命名空间.了解这些命名空间必定是一件好事情.Flex 4有三个非常重要的命名空间,分别是: xmlns:fx=”http://ns.adobe.com/mxml/200 ...
- Flex通信-Java服务端通信实例
转自:http://blessht.iteye.com/blog/1132934Flex与Java通信的方式有很多种,比较常用的有以下方式: WebService:一种跨语言的在线服务,只要用特定语言 ...
- Microsoft Azure云计算第一步—试用帐户申请
从本文开始,将会对Microsoft Azure云从Iaas, Paas, Saas三种类型的云应用通过文章进行介绍.千里之行,始于帐户:),如果大家需要申请免费试用帐户请参考本文. 对于直接付钱的壕 ...
- 《学习OpenCV》练习题第四章第八题ab
这道题是利用OpenCV例子程序里自带的人脸检测程序,做点图像的复制操作以及alpha融合. 说明:人脸检测的程序我参照了网上现有的例子程序,没有用我用的OpenCV版本(2.4.5)的facedet ...
- 《Java数据结构与算法》笔记-CH5-链表-1单链表
/** * Link节点 * 有数据项和next指向下一个Link引用 */ class Link { private int iData;//数据 private double dData;//数据 ...
- Working with nil
[Working with nil] It’s always a good idea to initialize scalar variables at the time you declare th ...
- jgroups 常见概念
组播(Multicast)传输:在发送者和每一接收者之间实现点对多点网络连接. 单播(Unicast)传输:在发送者和每一接收者之间实现点对点网络连接. 广播(Broadcast)传输:是指在IP子网 ...
- 使用Map List 封装json数据
<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</art ...
- sql server中的decimal或者numeric的精度问题
何谓精度:最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数.该精度必须是从 1 到最大精度 38 之间的值.默认精度为 18. 小数位数:小数点右边可以存储的十进制数字的最大位数.小数位数 ...