问题如下:
判断结婚的组合对数数。
定义: 好三位新郎为 A,B,C ;三位新娘为X,Y,Z
有人想要知道他们谁和谁结婚 ,于是问了其中的三位。 
回答是这样的:A说他将和X结婚 ;X说她的未婚夫是C ;C说他将和Z结婚,
这个人听到他们在开玩笑,全部在说谎话,请编程。

package JieHun;

public class JieHun {

    /**   这边【程序 是 详细注释 代码:】
* @param args
* 判断结婚的 组合对数数
* 定义: 好三位新郎为 A,B,C ;三位新娘为X,Y,Z
* 有人想要知道他们谁和谁结婚 ,于是问了其中的三位
* 回答是这样的:A说他将和X结婚 ;X说她的未婚夫是C ;C说他将和Z结婚,
* 这个人听到他们在开玩笑,全部在说谎话,请编程
*/
public static String nan[]={"A","B","C"};
public static String nv[]={"X","Y","Z"}; public static String shuju1,suoyou ;//程序测试
public static void main(String[] args) {
String[] ZuheA=new String[];
String[] ZuheB=new String[];
String[] ZuheC=new String[]; //必须 要创建数组对象
int a=,b=,c=;//进入一个数据就加一个数据 ,数据必须要写在循环的外面,不然循环一次就 清零了 int ce1=,ce2=,ce3=;
//定义: 好三位新郎为 A,B,C;
//三位新娘为X,Y,Z
/**
* 1.确定好有多少 种组队的 样式 AX--AY--AZ; BX--BY--BZ ; CX--CY--CZ;
*/
//System.out.print("长度是"+nan.length);
for (int i = ; i <nan.length; i++) {//将【新郎】遍历
String nandui=nan[i];
for (int j = ; j <nv.length; j++) {//将【新娘】遍历
//System.out.println("最后的【i】:"+i+"和【j】:"+j);//测试 数据
String nvdui=nv[j];
String ZuHe=nandui+nvdui;//组合结婚的对数
/* 【测试程序】
suoyou +=" "+ZuHe+", ";
System.out.println("这是【开始(ce1)】第:"+ce1+"输出结果:"+suoyou);//程序测试
ce1++;
*/
//char[] ZuheA=null,ZuheB=null,ZuheC=null;//组合对数值 就是ZuheA AX--AY--AZ 这就是数组形式 // List<String> listA = new ArrayList<String>();
// List<String> listB = new ArrayList<String>();
// List<String> listC = new ArrayList<String>(); //获取组合 数据 //A说他将和X结婚 ;【 为假 】 那么就可以让 AY--AZ ………… 进入
if(!ZuHe.equals("AX")){ //这里面不需要 在&&!ZuHe.equals("XA") 因为这里面始终以 男同志为开头
// System.out.println("我是A一号判断:"+ZuHe);//程序测试
// if(ZuHe.matches("[\\w]+A")){//这里面 -采用的正则表达式 只让含 A开头的数据进入
//上面的 采用的正则表达式 这个有点问题 若是中间的 字符他说查不到的
/** 【测试程序】
* suoyou +=" "+ZuHe+", ";
System.out.println("这是【A】(ce2)第:"+ce2+"输出结果:"+suoyou);//程序测试
ce2++;
*/
//【方法二】 if(!ZuHe.equals("AX") && ZuHe.matches(".*A.*")) 注意:这个【 可以使用】else if
//【方法一】 这是为了明了 这个【不能使用 】else if
if(ZuHe.matches(".*A.*")){ // 用java正则表达式检测字符串中是否含有某字符
//System.out.println("我是A二号判断:"+ZuHe);//程序测试
ZuheA[a]=ZuHe;
//System.out.println("数据a:"+a);//程序测试
//ZuheA = ZuHe.toCharArray();// 这是char类型的
//ZuheA = ZuHe.toString();
//System.out.println(ZuheA);
//listA.add(ZuHe);
//ZuheA = listA.toArray(new String[a]);
a++;
}
}
//X说她的未婚夫是C ;也就是说:C是X的未婚夫 因为 我这里面始终 以男性 为开头。 【 为假 】 那么就是 除去CX-(XC) 都可以进入
//else if (!ZuHe.equals("CX")) { //【注意:】 这里面不能使用 else if()因为使用了 这个 就会导致 只要上面的条件满足 (也就会上面if)条件满足 他就不会在在下面 进行判断
//除非 将上面的那两重if语句 写在一起 那样这下面就可以使用 else if 【方法二】 if(!ZuHe.equals("AX") && ZuHe.matches(".*A.*")) 这样就可以 在下面使用else if
if (!ZuHe.equals("CX")) {
//C说他将和Z结婚 【为假】 所以 下面 的数据可以进入
/* 【测试程序】
suoyou +=" "+ZuHe+", ";
System.out.println("这是【C(ce3)】第:"+ce3+"输出结果:"+suoyou);//程序测试
ce3++;
*/
/* if(ZuHe.equals("CY")){
System.out.println("出现了CY数据:"+ZuHe);
}*/
if(!ZuHe.equals("CZ")){ //if(ZuHe.matches("[\\w]+C")){//这里面 -采用的正则表达式 只让含 C开头的数据进入
if(ZuHe.matches(".*C.*")){
ZuheC[c]=ZuHe; //注意:这里面其实只又一个数据 就是CY
//ZuheC = ZuHe.toCharArray();// 这是char类型的
//listC.add(ZuHe);//添加数据
//ZuheC =listA.toArray(new String[c]);
//System.out.println("出现了CY数据:"+ZuHe);
c++;
}
}
}
//这里面 -采用的正则表达式 只让含 B开头的数据进入 这里面是有三组数据
//if(ZuHe.matches("[\\w]+B")){
//else if(ZuHe.matches(".*B.*")){ //【注意:】 这里面不能使用 else if()因为使用了 这个 就会导致 只要上面的条件满足 (也就会上面if)条件满足 他就不会在在下面 进行判断
//除非 将上面的那两重if语句 写在一起 那样这下面就可以使用 else if
if(ZuHe.matches(".*B.*")){
ZuheB[b]=ZuHe; //注意:这里面其实只又一个数据 就是CY
//ZuheB = ZuHe.toCharArray();// 这是char类型的
//listB.add(ZuHe);
//ZuheB=listB.toArray(new String[b]);
b++;
} //就是将获取的数据进行组合匹配 组合匹配的数据 必须是要将 最外层的数据循环完成 在进行 也就是 i=2;j=2的时候
if(i== && j==){//这样他们的数据就已经全部匹配完成了
for (int k = ; k < ZuheA.length; k++) {
String qeiA=ZuheA[k];//获取 为真的 数据
for (int l = ; l < ZuheB.length; l++) {
String qeiB=ZuheB[l];
for (int m = ; m < ZuheC.length; m++) {
String qeiC=ZuheC[m];
String QuanBu=qeiA+""+qeiB+""+qeiC;//这里面是为了判断该 数据是否 有 相同 的字符 【因为】这里面不能出现相同的数据 因为 中国法律规律 一夫一妻制 所以 结婚 组合 也是如此 每个人对应一个
String QuanBu1=" "+qeiA+","+qeiB+","+qeiC+" ";//这里是为了进行打印而做的备份数据 不做就要 在进行 将数据进行分解 或者加入 空格
System.out.println("\t\t第【k】"+k+" 【l】"+l+" 【m】"+m+"可以出现这么种:组合结果:"+ QuanBu);
//int cfA,cfB,cfC;//不允许重复的个数
//if(QuanBu.matches("^.*?(.+?)\\1.*?$")){//正则表达式 不允许这里面有着重复的数据(也就是重复的字符串) 这个正则表达式有问题
if(QuanBu.matches("(?!.*(.).*\\1)")){//表示字符串中【不含】重复字符
System.out.println("\n\t由于不可能出现这么多种结果,也不可能出现 一对多 只能出现一对一 所以最终 结婚对数如下");
System.out.println("\n\n\t\t【最终结婚的组合】是:"+ QuanBu1);
}
}
}
}
}
}
} } }

run:

        第【k】  【l】  【m】0可以出现这么种:组合结果:AYBXCY
第【k】 【l】 【m】0可以出现这么种:组合结果:AYBYCY
第【k】 【l】 【m】0可以出现这么种:组合结果:AYBZCY
第【k】 【l】 【m】0可以出现这么种:组合结果:AZBXCY
第【k】 【l】 【m】0可以出现这么种:组合结果:AZBYCY
第【k】 【l】 【m】0可以出现这么种:组合结果:AZBZCY

Java之趣味编程结婚问题的更多相关文章

  1. [ 高并发]Java高并发编程系列第二篇--线程同步

    高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...

  2. 1.JAVA之GUI编程概述

          下列内容为本人看毕向东老师java视频教程学习笔记! JAVA GUI图形用户界面编程: Windows 操作系统提供两种操作方式:                             ...

  3. 2.JAVA之GUI编程布局

    布局管理器 容器中的组件排放方式,就是布局 常见的布局管理器: **************************************************** 1.FlowLayout(流式 ...

  4. 3.JAVA之GUI编程Frame窗口

    创建图形化界面思路: 1.创建frame窗体: 2.对窗体进行基本设置: 比如大小.位置.布局 3.定义组件: 4.将组件通过add方法添加到窗体中: 5.让窗体显示,通过setVisible(tur ...

  5. 4.JAVA之GUI编程事件监听机制

    事件监听机制的特点: 1.事件源 2.事件 3.监听器 4.事件处理 事件源:就是awt包或者swing包中的那些图形用户界面组件.(如:按钮) 事件:每一个事件源都有自己特点有的对应事件和共性事件. ...

  6. 5.JAVA之GUI编程窗体事件

    我们回顾下第三篇时的内容: 在3.JAVA之GUI编程Frame窗口中窗体是无法直接关闭的,想要关闭须进程管理器结束进程方式关掉. 现在我们就来解决下这个问题. ******************* ...

  7. 6.JAVA之GUI编程Action事件

    功能:单击一个按钮实现关闭窗口: import java.awt.*; import java.awt.event.*; public class StudyAction { // 定义该图形所需的组 ...

  8. 7.JAVA之GUI编程鼠标事件

    鼠标事件: 功能: 1.基本窗体功能实现 2.鼠标移动监听,当鼠标移动到按钮上时,触发打印事件. 3.按钮活动监听,当按钮活动时,触发打印事件. 4.按钮被单击时触发打印事件. 源码如下: impor ...

  9. 8.JAVA之GUI编程键盘码查询器

    程序使用说明: 1.本程序由于是java代码编写,所以运行需安装jdk并配置好环境变量. 2. 复制java代码到记事本内,另存为Keyboard_events.java: 3.复制批处理代码到记事本 ...

随机推荐

  1. Objective-C: NSFileManager 的使用

    在Objective-C 中的 Foundation 框架中,文件操作是由NSFileManager 类来实现的. 下面通过例子来说明如何创建一个文件,并向文件中写内容,以及如何读出文件中的内容: - ...

  2. MVC基本学习

    asp.net MVC ViewData详解 http://www.cnblogs.com/gaopin/archive/2012/11/13/2767515.html Asp.net MVC中的Vi ...

  3. .net版本之间的关系

    net framework 2.0,3.0与3.5三个版本之间关系如下: .net framework 2.0 = CLR 2.0 + FCL(framework class library) .ne ...

  4. cocos2d 制作动态光晕效果基础 —— blendFunc

    转自:http://blog.csdn.net/yang3wei/article/details/7795764 最近的项目要求动态光晕的效果. 何谓动态光晕?之前不知道别人怎么称呼这个效果, 不过在 ...

  5. Hadoop on Mac with IntelliJ IDEA - 2 解决URI错误导致Permission denied

    本文讲述在IntelliJ IDEA中使用FileSystem.copyFromLocalFile操作Hadoop时因URI格式有误导致Permission denied的解决过程. 环境:Mac O ...

  6. BW性能优化

    少写例程,减少ABAP处理时间,例程要有效率减少查询数据库表先加载主数据,然后加载事务数据创建聚集进行数据压缩M:N关系的数据不能放到一个维度减少计算指标数量,提高上载效率并行加载建模型时如果有日的分 ...

  7. C#中使用UDP通信

    UDP通信是无连接通信,客户端在发送数据前无需与服务器端建立连接,即使服务器端不在线也可以发送,但是不能保证服务器端可以收到数据. 服务器端代码: static void Main(string[]  ...

  8. [Canvas] Make Canvas Responsive to Pixel Ratio

    Canvas is great for high performance graphics rendering but by default the results look blocky on ph ...

  9. grunt自动化工具

    Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. 安装 CLI 首先,需要先将Grunt命令行(CLI)安装到全局环境中. npm install - ...

  10. 假设用一个名为text的字符串向量存放文本文件的数据,其中的元素或者是一句话或者是一个用于表示段分隔的空字符串。将text中第一段全改为大写形式

    #include<iostream> #include<string> #include<vector> using namespace std; int main ...