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程序中自启动appium服务
普通启动Appium服务方法: 打开cmd,运行命令: #>appium -a 127.0.0.1 -p 4723 当程序输出如上图信息的时候,表示appium启动成功,此时便可以运行 ...
- just test Gson
just test Gson code package com.qilin.test; import com.google.gson.Gson; import org.apache.commons.l ...
- 封装cookie.js、EventUtil.js、
最近学习了javascript,封装好的东西看起来舒服,以备需要的时候拉出来,jquery对javascript做了很好的封装!以后会多用jquery多些 var CookieUtil = { get ...
- 徐汉彬:亿级Web系统搭建——单机到分布式集群(转载)
文章转载自http://www.csdn.net/article/2014-11-06/2822529/1 当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的 ...
- C# 必应代码搜索
微软宣布推出必应代码搜索服务,暂时只支持 C# 语言,日后将支持更多代码语言. Visual Studio 用户安装必应搜索插件之后可使用该服务来简化编程任务.Visual Studio 与 MSDN ...
- 什么是ADB
ADB, Android Debug Bridge, 是一个client-server程序,可以用来和安卓设备交流 Client: 用来发送命令的,client运行在开发机器上(电脑cmd, adb ...
- Java并发编程:Timer和TimerTask
Java并发编程:Timer和TimerTask 下面内容转载自: http://blog.csdn.net/xieyuooo/article/details/8607220 其实就Timer来讲就是 ...
- 常见mongo命令
@(编程) 查询 db.getCollection('SalaryEntity').find({"Month" : "201601"}) db.getColle ...
- PCB中层的定义(一)
- Javascript中的数据类型之旅
虽然Javascript是弱类型语言,但是,它也有自己的几种数据类型,分别是:Number.String.Boolean.Object.Udefined.Null.其中,Object属于复杂数据类型, ...