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有时候可以方便的处理集合遍历的问题,可是集合的标准遍历是使用迭代 ...
随机推荐
- andrdoi示例项目SampleSyncAdapter分析
概述 在sdk目录下有个示例项目SampleSyncAdapter,演示了 用户授权和同步适配器的一些内容,是个学习的很好范例.我读了很久,很多地方没搞明白,先把理解的一些记录下来. 通过学习该示例, ...
- java操作大文件复制
https://www.cnblogs.com/coprince/p/6594348.html https://blog.csdn.net/w592376568/article/details/796 ...
- C语言中的循环语句练习
注:练习题目均出自<明解C语言 入门篇> 一.do语句 1,求多个整数的和及平均值 #include<stdio.h> int main(void) { ; //和 ; //整 ...
- e868. 获取和设置本地外观
By default, Swing uses a cross-platform look and feel called Metal. In most cases, it is more desira ...
- 目标跟踪之meanshift---meanshift2
均值漂移,可以对非刚性物理进行跟踪,是分参数估计,过程是迭代的过程,对光和形态不敏感,缺点是检测目标是固定的,特征不较少,模板背景没有实时更新,没有目标的位置精度预测只是梯度浓聚, 原理: 用文字标书 ...
- DOS批处理基础
1. echo 和 @ 回显命令 @ #表示不显示@后面的命令 echo off #从下一行开始关闭回显 @echo off ...
- R语言colorRampPalette函数-创建颜色梯度(渐变色)
在绘热图时,需要将数值映射到不同的颜色上,这时就需要一系列的颜色梯度 colorRampPalette 函数支持自定义的创建一系列的颜色梯度 代码示例: > colors <- color ...
- c# 单实例运行
/// <summary> /// 单实例运行程序 /// </summary> static void SingleInstanceRun() { bool isAppRun ...
- 谈谈如何优化MYSQL数据库查询
1.优化数据类型 MySQL中数据类型有多种,如果你是一名DBA,正在按照优化的原则对数据类型进行严格的检查,但开发人员可能会选择他们认为最简单的方案,以加快编码速度,或者选择最明显的选择,因此,你可 ...
- vue form表单绑定事件与方法
使用v-on绑定事件 <button @click="hello">Hello</button><br /> <button @click ...