zoukankan      html  css  js  c++  java
  • 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+
    											"
    a2--"+a2+
    											"
    a3--"+a3+
    											"
    a4--"+a4+
    											"
    a5--"+a5+
    											"
    a6--"+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 之 应用多线程计算1+2+...+100之多种方法比较(二)
    Java 之 应用多线程计算1+2+...+100之多种方法比较(一)
    SQL语句优化
    第六章:shiro Realm相关对象
    第五章:shiro密码加密
    第四章:shiro的INI配置
    第三章:shiro授权认证
    第二章:shiro身份验证
    第一章:Shiro简介
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/5062814.html
Copyright © 2011-2022 走看看