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个forfor (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之 ------ 可变參数和卫条件相关推荐
- 具体解释可变參数列表
可变參数 至少有一个參数 比如:void add(int a,- ){} 例题 模拟printf()函数 #include <stdio.h> #include <stdarg ...
- 增强for循环、Map接口遍历、可变參数方法
增强for循环 1.for循环能做得事情.增强for循环大部分都能做(假设要想获得下标的时候就必须使用简单for循环了) 2.增强for有时候可以方便的处理集合遍历的问题,可是集合的标准遍历是使用迭代 ...
- Lua学习教程之 可变參数数据打包与解包
利用table的pack与unpack进行数据打包与解包.測试代码例如以下: print("Test table.pack()----------------");function ...
- swift 可变參数
func sumof(numbers:Int...)->Int{ var sum = 0; for number in numbers{ sum+=number; } return ...
- C语言补丁原理,C语言可变长參数实现原理
(1) C语言可变參数 我们能够从C语言的printf得出可变參数的作用.printf函数的原型例如以下: int printf ( const char * format, ... ); ...
- java參数传递机制浅析
欢迎转载,转载请声明出处! ----------------------------------------- 前言: java语言中,參数的传递仅仅有一种机制.那就是值传递. 举例: 以下将通过几个 ...
- java -D參数简化增加多个jar【简化设置classpath】
1.-D<name>=<value> set a system property 设置系统属性. java命令引入jar时能够-cp參数,但时-cp不能用通配符(多个jar时 ...
- JVM经常使用的调优參数
-Xms512m -Xmx1024m -XX:MaxPermSize=1204m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+ ...
- 菜鸟学习Spring——60s利用JoinPoint获取參数的值和方法名称
一.概述 AOP的实现方法在上两篇博客中已经用了两种方法来实现如今的问题来了尽管我们利用AOP,那么client怎样信息传递?利用JoinPoint接口来实现client给详细实现类的传递參数. 二. ...
最新文章
- 1105 Spiral Matrix 给定数组向螺旋矩阵中填入数据
- R 语言学习过程全记录 ~
- 概率占据图(POM)算法理解
- java clex 中的 IloLPMatrix
- SpringBoot之使用(一)
- 如何将matlab转成jav,Matlab将GUI转化为exe文件,并且进行发布
- mininet编程实现交换机规则的插入、删除与修改。_三层以太网交换机基本原理及转发流程...
- iOS对象的归档和解档-Runtime实现
- atitit.提取zip rar文件列表 java php c# 的原理与设计
- 谷歌动态验证码的简单使用
- 会议记录管理系统java_项目文档--会议记录标准与模板
- VirtualBox安装VBoxGuestAdditions增强功能
- Matlab分类识别实战||基于神经网络的深水船水声音数据集的识别与分类(GoogLeNet+SqueezeNet+AlexNet)
- Pcshare驱动级木马及查杀
- 查看挂载阵列卡下的磁盘SMART
- 有道无术,术可求;有术无道,止于术
- 台式计算机时间不能同步,台式电脑时间同步不了?一分钟就能快速解决
- AppLocker 简要实验笔记
- EndNote X9在Word插入参考文献时在工具来不显示,使用时显示服务器运行失败,和用国标GBT 7714遇到的错误
- 分享、活动、地推、广告:openinstall全渠道多场景解决方案