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 转载请标明来源 本文的二 ...
随机推荐
- Python中的并发编程
简介 我们将一个正在运行的程序称为进程.每个进程都有它自己的系统状态,包含内存状态.打开文件列表.追踪指令执行情况的程序指针以及一个保存局部变量的调用栈.通常情况下,一个进程依照一个单序列控制流顺序执 ...
- 【开源项目之路】jquery的build问题
在刚开始clone了jquery到本地build的时候,就遇到了问题. “ENORESTARGET No tag found that was able to satisfy ...” 提示为bowe ...
- 《Java数据结构与算法》笔记-CH5-链表-1单链表
/** * Link节点 * 有数据项和next指向下一个Link引用 */ class Link { private int iData;//数据 private double dData;//数据 ...
- JQuery发送Put、Delete请求 - 摘自网络
DELETE: $.ajax({ url: '/script.cgi', type: 'DELETE', success: function(result) { // Do something wit ...
- css font-face自定义字体
font-face:自定义字体 1.找到一个字体文件 2.放入新建的的font的文件夹内: 3.在样式里面以下内容 注释:aa是字体名 <style> @font-face{ fo ...
- static_cast, dynamic_cast, const_cast探讨
转自:http://www.cnblogs.com/chio/archive/2007/07/18/822389.html 首先回顾一下C++类型转换: C++类型转换分为:隐式类型转换和显式类型转换 ...
- rdlc Report Viewer Configuration Error
主要是web.config没有配置 方法参考http://msdn.microsoft.com/zh-cn/library/ms251661.aspx
- emWin(ucGui)的Edit控件退格处理方法 worldsing
在enWin(ucGui)中EDIT控件在数值模式(十进制/十六进制/二进制/浮点数)下编辑是,无法使用BackSpace键进行退格,主要涉及到的函数有: EDIT_SetBinMode() EDIT ...
- (博弈论)hdoj 1079 Calendar Game
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1079 题解:题目大意,两个人Adam和Eve一块儿玩游戏,游戏规则是从1900年1月1日到2001年1 ...
- WIN7建立wifi热点及无法启动承载网络的解决办法
1,根据网络共享的方法,最简单莫过于利用Win7的虚拟网卡来做热点,而不用借助其他软件. 首先,用管理员身份打开CMD命令提示符,输入 netsh wlan set hostednet ...