JavaBase07

这篇博客探讨了Java中数组的基础知识,通过一个排序问题——中国四大淡水湖的大小排序,展示了数组在处理序列数据时的重要性。同时,还提出了一个彩票随机选号的算法问题,进一步说明了数组在实际编程中的应用场景。

数组

【题目如下】

我国有四大淡水湖。

A说:洞庭湖最大,洪泽湖最小,鄱阳湖第三。

B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三。

C说:洪泽湖最小,洞庭湖第三。

D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。
给四大湖排序:

package unit01;

import java.util.Arrays;


/*
 * Date:2018/10/13
 * Function:四大淡水湖排名算法
 * @author:Heguoqing
 * */
public class Class07 {
	
	public static void main(String[] args) {
		int D,P,H,T;//分别定义整型的洞庭湖,潘阳湖,洪泽湖,太湖
		for(D=1;D<=4;D++){
			for(P=1;P<=4;P++){
				if(P==D) continue;
				for(H=1;H<=4;H++){
					if(H==P||H==D) continue;
					for(T=1;T<=4;T++){
						if(T==H||T==P||T==D) continue;
						int b1=(D==1?1:0)+(H==4?1:0)+(P==3?1:0);	
						int b2=(H==1?1:0)+(D==4?1:0)+(P==2?1:0)+(T==3?1:0);
						int b3=(H==4?1:0)+(D==3?1:0);
						int b4=(P==1?1:0)+(T==4?1:0)+(H==2?1:0)+(D==3?1:0);
						if(b1==1&&b2==1&&b3==1&&b4==1){
								System.out.println(D+"洞庭湖");
								System.out.println(H+"洪泽湖");
								System.out.println(P+"潘阳湖");
								System.out.println(T+"太湖");
							}
						}
					}
				}
			}
		}
	}


给四大虎按照从大到小排序:

package unit01;

import java.util.Arrays;
import java.util.Comparator;

/*
 * Date:2018/10/13
 * Function:四大淡水湖排名算法
 * @author:Heguoqing
 * */
public class Class07 implements Comparator<Object[]>{
	public int compare(Object[] o1, Object[] o2) {
		int a=(Integer)o1[0];
		int b=(Integer)o2[0];
		return a-b;
	}
	public static void main(String[] args) {
		int D,P,H,T;//分别定义整型的洞庭湖,潘阳湖,洪泽湖,太湖
		for(D=1;D<=4;D++){
			for(P=1;P<=4;P++){
				if(P==D) continue;
				for(H=1;H<=4;H++){
					if(H==P||H==D) continue;
					for(T=1;T<=4;T++){
						if(T==H||T==P||T==D) continue;
						int b1=(D==1?1:0)+(H==4?1:0)+(P==3?1:0);	
						int b2=(H==1?1:0)+(D==4?1:0)+(P==2?1:0)+(T==3?1:0);
						int b3=(H==4?1:0)+(D==3?1:0);
						int b4=(P==1?1:0)+(T==4?1:0)+(H==2?1:0)+(D==3?1:0);
						if(b1==1&&b2==1&&b3==1&&b4==1){
							//定义一个二维数组,因为数组的类型必须保持一致才能方便给数组类型而我需要的类型是不一致的
							//所以我定义一个Object类型的二维数组,可以避免数组类型必须保持一致
							Object [][] temp={{D,"洞庭湖"},{P,"潘阳湖"},{H,"洪泽湖"},{T,"太湖"}};
							Arrays.sort(temp, new Class07());//这里需要new一个TestComparator类才能调用
							for(int i=0;i<temp.length;i++){
								System.out.println(temp[i][0]+" "+temp[i][1]);
							}
						}
					}
				}
			}
		}
	}
}

题目:彩票35(1-35)随机选出不同的7个数字:

package demo1;

import java.util.Arrays;

public class A {
	public int[] getNum(){
		int []arr=new int[7];
		for(int i=0;i<arr.length;){
			double num=Math.random()*35;//[0,35)
			num=Math.floor(num+1);//向下取整[1,35]
			int s=(int)num;//[1,35]取整
			boolean bool=false;
			//判断产生的随机数是否相等相同的话就跳出循环
			for(int x=0;x<arr.length;x++){
				if(s==arr[x]){
					bool=true;//查找到了相同的随机数
					break;//跳出本次循环
				}
			}
			//如果随机数不同加步长
			if(bool==false){
				arr[i]=s;
				i++;
			}
		}
		Arrays.sort(arr);
		return arr;
	}
	public static void main(String[] args) {
		A a=new A();
		int []temp=a.getNum();//定义一个新的数组来接收方法中的数组
		for(int n=0;n<temp.length;n++){
		System.out.print(temp[n]+"  ");
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值