问题如下:
判断结婚的组合对数数。
定义: 好三位新郎为 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. MVC神韵---你想在哪解脱!(十五)

    在模型中添加验证规则 本节介绍如何在我们的Movie(电影)模型中添加一些验证规则,同时确认当用户使用我们的应用程序创建或编辑电影信息时将使用这些验证规则对用户输入的信息进行检查.首先,让我们在Mov ...

  2. C# 常用日期类型转换帮助类

    本文转载:http://www.cnblogs.com/iamlilinfeng/p/3378659.html 最近工作比较忙,与此同时自己也在业余时间开发一个电子商务网站.虽然每天都很累,但感觉过的 ...

  3. 在linux下编译netcat并且反弹cmdshell(转载)

    本地Windows监听 nc -vv -l -p 1234   首先从sf上get一个tar的压缩包 wget http://sourceforge.net/projects/netcat/files ...

  4. zookeeper的C#Client

    最近在搭一套soa,  服务使用java/scala 的finagle 协议使用thrift 然后 finagle默认服务端会是使用zookeeper作为节点存储.. 所以想要访问具体服务,需要先通过 ...

  5. Codeforces Round #250 (Div. 1) D. The Child and Sequence 线段树 区间取摸

    D. The Child and Sequence Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest ...

  6. .Net语言 APP开发平台——Smobiler学习日志:开发APP时,如何快速地实现屏幕自适应

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 一.属性介绍 设置控件在客户端屏幕可见并超出客户端屏幕时,是否自动调节高度以适应屏幕高 ...

  7. Mouse_event 鼠标点击

    //这样就是左键单击 mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );// 按下mouse_event( MOUSEEVENTF_LEFTUP, 0, ...

  8. iOS开发——语法篇OC篇&高级语法精讲

    高级语法精讲 一.NSSet.NSMutableSet集合的介绍 1)NSSet.NSMutableSet集合,元素是无序的,不能有重复的值. 2)用实例方法创建一个不可变集合对象 例如: //宏定义 ...

  9. Spark wordcount 编译错误 -- reduceByKey is not a member of RDD

    Attempting to run http://spark.apache.org/docs/latest/quick-start.html#a-standalone-app-in-scala fro ...

  10. C++中new与delete问题学习

    一.new char与delete问题 . 问题程序 [cpp] view plaincopy #include <iostream> using namespace std; void ...