/*

 有人邀请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课堂练习之可变參数与卫条件的更多相关文章

  1. java之 ------ 可变參数和卫条件

    可变參数:适用于參数个数不确定.类型确定的情况,java把可变參数当做数组处理. 可变參数必须位于最后一项.当可变參数个数多于一个时,必将有一个不是最后一项,所以仅仅支持有一个可变參数. 可变參数的书 ...

  2. java 可变參数列表

    Java SE5加入了可变參数列表特性 參数能够这样定义.(Object-args).可变參数用"..."来定义,args是可变參数的数组.举个样例: package sample ...

  3. java 可变參数

    我们在某些特定的需求环境下,可能要对某一个方法中的參数进行一些操作,并且这些方法中的參数是不规定的,那么问题来了,我们该怎么办呢? java事实上就为我们考虑了这样的情况,那就是使用可变參数 可变參数 ...

  4. OC可变參数的函数实现va_start、va_end、va_list的使用

    一.简单介绍 我们常常在编程的时候看见类似这种代码,如图1.1 图1.1 或者是这种可变參数,如图1.2 图1.2 二.基本知识介绍 在学习怎样写这样的格式的函数前,先简介几个经常使用的宏: 下面摘自 ...

  5. iOS 处理方法中的可变參数

    ## iOS 处理方法中的可变參数 近期写了一个自己定义的对话框的demo,想模仿系统的UIAlertView的实现方式.对处理可变參数的时候,遇到了小问题,于是谷歌了一下.写下了处理问题的方法.记录 ...

  6. Effective JavaScript Item 21 使用apply方法调用函数以传入可变參数列表

    本系列作为Effective JavaScript的读书笔记. 以下是一个拥有可变參数列表的方法的典型样例: average(1, 2, 3); // 2 average(1); // 1 avera ...

  7. C语言利用va_list、va_start、va_end、va_arg宏定义可变參数的函数

    在定义可变參数的函数之前,先来理解一下函数參数的传递原理: 1.函数參数是以栈这样的数据结构来存取的,在函数參数列表中,从右至左依次入栈. 2.參数的内存存放格式:參数的内存地址存放在内存的堆栈段中, ...

  8. 增强for循环、Map接口遍历、可变參数方法

    增强for循环 1.for循环能做得事情.增强for循环大部分都能做(假设要想获得下标的时候就必须使用简单for循环了) 2.增强for有时候可以方便的处理集合遍历的问题,可是集合的标准遍历是使用迭代 ...

  9. Printf可变參数使用

    參考文档: http://bbs.csdn.net/topics/70288067 Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源 本文的二 ...

随机推荐

  1. 庞锋 OpenCV 视频 学习进度备忘

    书签:另外跳过的内容有待跟进 学习资源: opencv视频教程目录(初级)   主讲:庞锋,毕业于电子科技大学 知识基础支持: 线性代数 应用数学 跳过的内容: 1.第1~6集跳过,简单.(2014- ...

  2. 重新开始吧(ADB+AndroidManifest.xml)

    我现在默认已经搭建好了开发环境.如果没有,可以参见去Google一下,或者我上两篇文章中也有提到. 先补充一点: SDK不用FQ.也能更新 修改hosts文件 下载sdk版本: 在hosts文件中追加 ...

  3. ListView蛮好用

    知识点如下: 1. ListView的基本用法 2. ArrayAdapter和SimpleAdapter的用法 3. OnScrollListener 和 OnItemClickListener 4 ...

  4. 浅谈jquery选择器

    首先来说说jquery选择器的优势: 1.简洁的写法  2.支持css1.0到3.0选择器 3.完善的处理机制. 再来说说分类: jquery选择器分为基本选择器.层次选择器.属性选择器.基本过滤选择 ...

  5. Android之操作SQLite

    一.SQLite的介绍 1.SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入  式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的 ...

  6. 深入浅出谈存储:如何区别NAS、SAN与DAS

    深入浅出谈存储:如何区别NAS.SAN与DAS 2012年02月17日16:51 来源:新浪博客 作者:林沛满 编辑:曾智强 查看全文 赞(0)评论(1) 分享 标签: DAS , SAN , 存储系 ...

  7. C++ 16进制转10进制

    #include <stdio.h>#include <string.h>unsigned long f(char* str){ unsigned long var=0; un ...

  8. C# rmi例子

    接口定义 实体定义,注意需要序列化 using System; namespace Interface { [Serializable] public class DataEntity { publi ...

  9. quartz中关键类

    job job是一个接口,你对某一类job的定义,可以通过实现该接口来实现.例如为销售报告定义一个SalesReportJob,包含变量name. job可以使用的几个注解 @DisallowConc ...

  10. UI进阶 文件管理器(NSFileManager)文件对接器(NSFileHandle)

    一.文件管理器与文件连接器之间的区别 文件管理器(NSFileManager) 此类主要是对文件进行的操作(创建/删除/改名等)以及文件信息的获取. 文件连接器(NSFileHandle) 此类主要是 ...