数组练习题

数组练习题

1.数组里有{1,2,3,4,5,6,7,8,9},请随机打乱顺序,生成一个新的数组(请以代码实现)

机试考试题:实现一个游戏中的发牌算法

随机数:Math.random和Random类

public class A1 {
	public static void main(String[] args) {
		int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
		int[] arr2 = new int[arr.length];
		Random r = new Random();
		for (int i = 0; i < arr.length; i++) {
			while (true) {
				int pos = r.nextInt(arr.length);
				if (arr[pos] != -1) {
					int num = arr[pos];
					arr2[i] = num;
					arr[pos] = -1;
					break;
				}
			}
		}
		for (int temp : arr2) {
			System.out.print(temp + " ");
		}
	}
}

2.写出代码判断一个整数是不是2的阶次方(请以代码实现,谢绝调用API方法)

public class A2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		int kk = num;
		boolean res = true;
		if (num >= 2) {
			while (true) {
				if (kk % 2 != 0) {
					res = false;
					break;
				}
				kk /= 2;
				if (kk == 1)
					break;
			}
		} else
			res = false;
		if (res) {
			System.out.println(num + "是2的阶次方");
		} else {
			System.out.println(num + "不是2的阶次方");
		}
	}
}

3.假设今日是2015年3月1日,星期日,请算出13个月零6天后是星期几,距离现在多少天(请用代码实现,谢绝调用API方法)

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class A3 {
	public static void main(String[] args) {
		String[] arr = new String[] { "星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
		Date d1 = new Date(2021 - 1900, 11 - 1, 15);
		DateFormat df = new SimpleDateFormat("yyyy-MM-ddE");
		System.out.println(df.format(d1));
		// 计算系统当前时的天数差和星期几
		Date now = new Date();
		long dis = (now.getTime() - d1.getTime()) / 1000 / 60 / 60 / 24;
		int pos = (int) (dis % 7 + 1);
		System.out.println("天数差为:" + dis + ",是" + arr[pos]);
		// 因为需要进行复杂的日期计算,所以引入Calendar日历类
		Calendar c1 = Calendar.getInstance();
		c1.set(Calendar.YEAR, 2021);
		c1.set(Calendar.MONTH, 11 - 1);
		c1.set(Calendar.DATE, 15);
		System.out.println(c1.getTime());
		System.out.println(df.format(c1.getTime()));
		Date date1 = c1.getTime();
		// 13个月零6天后
		c1.add(Calendar.MONTH, 13);
		c1.add(Calendar.DATE, 6);
		System.out.println(df.format(c1.getTime()));
		Date date2 = c1.getTime();
		dis = (date2.getTime() - date1.getTime()) / 1000 / 60 / 60 / 24;
		pos = (int) (dis % 7 + 1);
		System.out.println("天数差为:" + dis + ",是" + arr[pos]);
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值