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有时候可以方便的处理集合遍历的问题,可是集合的标准遍历是使用迭代 ...
随机推荐
- 30个开源电子商务系统(PHP)
osCommerce osCommerce是一款著名的PHP开源电子商务解决方案,提出“开箱即用”的强大功能,使网上商店安装非常方便快捷,并可以作为GNU通用公共授权的开源项目免费发布.osComme ...
- 制作nodejs项目镜像,实现docker下的快速部署
前言 前面的文章<centos7+ docker1.12 实践部署docker及配置direct_lvm>中,已经实践了如何在centos7下安装,配置docker, 所以接下来就打算去制 ...
- 安装Nginx+Lua+OpenResty开发环境配置全过程实例
安装Nginx+Lua+OpenResty开发环境配置全过程实例 OpenResty由Nginx核心加很多第三方模块组成,默认集成了Lua开发环境,使得Nginx可以作为一个Web Server使用. ...
- 关于div一侧固定,另一侧自适应
关于div一侧固定,另一侧自适应,从文字看出 一侧固定:说明有固定长度, 一侧自适应:说明是按比例缩放 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...
- python一天一题(1)
#有一个文件,文件名为output_1981.10.21.txt . # 下面使用Python: 读取文件名中的日期时间信息,并找出这一天是周几. # 将文件改名为output_YYYY-MM-DD- ...
- unity执行顺序问题(如何再次执行start方法)
2016-09-08 20:13 2084人阅读 评论(1) 收藏 举报 分类: unity3D(66) 版权声明:本文为博主原创文章,未经博主允许不得转载. unity执行顺序的文章已经很多了, ...
- 软件需求规格说明书(转自http://blog.csdn.net/li_canhui/article/details/6927540)
转自http://blog.csdn.net/li_canhui/article/details/6927540 1概述 1.1编写目的 指出编写<需求规格说明书>的目的.下面是示例: 编 ...
- Python——signal
该模块为在Python中使用信号处理句柄提供支持.下面是一些使用信号和他们的句柄时需要注意的事项: 除了信号 SIGCHLD 的句柄遵从底层的实现外,专门针对一个信号的句柄一旦设置,除非被明确地重置, ...
- 表单提交之List集合
一.表单数据 <div class="panel panel-default"> <div class="panel-heading"> ...
- Python内部机制。
type ,object ,__class__ ,__bases__ ,__metaclass__ , -------------------------不明白的地方----------------- ...