文章内容输出来源:拉勾教育大数据开发高薪训练营
源代码:https://gitee.com/tommie523/lagou_bigdata_class/tree/master/task01
提示用户输入年月日信息,判断这一天是这一年中的第几天并打印。
// 获取输入
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
Scanner sc = new Scanner(System.in);
// 添加循环体
while (true) {
String str = sc.nextLine();
// 当输入q时结束程序
if ("q".equals(str)) {
System.out.println("bye!");
break;
}
}
Scanner sc = new Scanner(System.in);
while (true) {
// 添加提示,明确输入的日期格式
System.out.println("请输入一个标准格式日期(例如:\"2020-1-1\");输入'q'退出程序。");
String str = sc.nextLine();
if ("q".equals(str)) {
System.out.println("bye!");
break;
}
// 设定日期格式
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
// 声明日期变量,初始化为null
Date date=null;
// 检查:正确则返回日期,错误则提示错误
try {
date = sd.parse(str);
} catch (Exception e) {
System.out.println(str + "日期格式错误。");
}
//如果日期为null则继续循环,否则开始方法体进行下一步判断
if(date!=null){
}
}
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入一个标准格式日期(例如:\"2020-1-1\");输入'q'退出程序。");
String str = sc.nextLine();
if ("q".equals(str)) {
System.out.println("bye!");
break;
}
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sd.parse(str);
} catch (Exception e) {
System.out.println(str + "日期格式错误。");
}
if (date != null) {
//格式化日期,取出年份字符串
String yearStr = String.format("%tY", date);
//字符串转整型
int year = Integer.parseInt(yearStr);
//判断是否为闰年
boolean isLeapYear = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
if (isLeapYear) {
// 闰年输出
} else {
// 平年输出
}
}
}
public static void judgeDate(Date date, int[] array) {
// 获取年
String year = String.format("%tY", date);
// 获取月并转为整型
int month = Integer.parseInt(String.format("%tm", date));
// 获取日并转为整型
int day = Integer.parseInt(String.format("%td", date));
// 获日期和:例如2020-4-2,依次获取1、2、3月的天数,加上2,即日期所在年天数
for (int i = 0; i < month - 1; i++) {
day += array[i];
}
// 格式化日期
SimpleDateFormat sd = new SimpleDateFormat("yyyy-M-d");
System.out.printf("%s是%s年的第%d天。\n\n", sd.format(date), year, day);
}
package task01;
import java.util.Scanner;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Code0101 {
// 获取日期在当年的天数
public static void getDays(Date date, int[] array) {
String year = String.format("%tY", date);
int month = Integer.parseInt(String.format("%tm", date));
int day = Integer.parseInt(String.format("%td", date));
for (int i = 0; i < month - 1; i++) {
day += array[i];
}
SimpleDateFormat sd = new SimpleDateFormat("yyyy-M-d");
System.out.printf("%s是%s年的第%d天。\n\n", sd.format(date), year, day);
}
public static void main(String[] args) {
// 定义平年,润年各月天数
int[] leapYear = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int[] nonLeapYear = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入一个标准格式日期(例如:\"2020-1-1\");输入'q'退出程序。");
String str = sc.nextLine();
if ("q".equals(str)) {
System.out.println("bye!");
break;
}
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sd.parse(str);
} catch (Exception e) {
System.out.println(str + "日期格式错误。");
}
if (date != null) {
String yearStr = String.format("%tY", date);
int year = Integer.parseInt(yearStr);
boolean isLeapYear = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
if (isLeapYear) {
// 闰年输出
getDays(date, leapYear);
} else {
// 平年输出
getDays(date, nonLeapYear);
}
}
}
// 关闭
sc.close();
}
}
// 请输入一个标准格式日期(例如:"2020-1-1");输入'q'退出程序。
// 2020-3-2
// 2020-3-2是2020年的第62天。
// 请输入一个标准格式日期(例如:"2020-1-1");输入'q'退出程序。
// 20200201
// 20200201日期格式错误。
// 请输入一个标准格式日期(例如:"2020-1-1");输入'q'退出程序。
// q
// bye!
编程找出 1000 以内的所有完数并打印出来。 所谓完数就是一个数恰好等于它的因子之和,如:6=1+2+3。
int max = 1000;
// 0不能做整数除法的除数,从1开始按1递增循环输出
for (int num = 1; num <= max; num++) {
}
int max = 1000;
for (int num = 1; num <= max; num++) {
// for循环小余整数num的所有整数,从1开始按1递增循环输出
for (int div = 1; div < num; div++) {
}
}
int max = 1000;
int sum;
for (int num = 1; num <= max; num++) {
// 内循环外定义一个整数收集真因子和
sum = 0;
// 真因子为不包含num本身的因子,即div < num
for (int div = 1; div < num; div++) {
// 如果div为num因子,则累加至sum
if (num % div == 0) {
sum += div;
}
}
}
int max = 1000;
int sum;
// 定义一个空字符串收集完数
String res = "";
for (int num = 1; num <= max; num++) {
sum = 0;
for (int div = 1; div < num; div++) {
if (num % div == 0) {
sum += div;
}
}
// 真因子和是否与num相等,是则连接进字符串res
if (num == sum) {
res = res + num + ",";
}
}
package task01;
public class Code0102 {
public static void main(String[] args) {
int max = 1000;
int sum;
String res = "";
for (int num = 1; num <= max; num++) {
sum = 0;
for (int div = 1; div < num; div++) {
if (num % div == 0) {
sum += div;
}
}
if (num == sum) {
res = res + num + ",";
}
}
// 打印结果
System.out.println("" + max + "以内的完数有:" + res.substring(0, res.length() - 1) + "。");
}
}
// 1000以内的完数有:6,28,496。
实现双色球抽奖游戏中奖号码的生成,中奖号码由 6 个红球号码和 1 个蓝球号码组成。 其中红球号码要求随机生成 6 个 1~33 之间不重复的随机号码。 其中蓝球号码要求随机生成 1 个 1~16 之间的随机号码。
Random rd = new Random();
// 定义一维数组
int[] red = new int[6];
// 定义随机数num,定义与初始化循环退出条件i=0
int num;
int i = 0;
while (i < red.length) {
// 获取随机数
num = rd.nextInt(33) + 1;
// 数组赋值
red[i] = num;
i++;
}
Random rd = new Random();
int[] red = new int[6];
int num;
int i = 0;
// 标注外层循环
outer: while (i < red.length) {
num = rd.nextInt(33) + 1;
// 遍历整个数组
for (int j = 0; j < red.length; j++) {
// 判断随机数是否已经在数组中存在
if (red[j] == num) {
System.out.println("已有数字,重来!");
// 在外层while循环跳过后面的代码,继续循环
continue outer;
}
}
red[i] = num;
i++;
}
package task01;
import java.util.Arrays;
import java.util.Random;
public class Code0103 {
public static void main(String[] args) {
Random rd = new Random();
int[] red = new int[6];
int num;
int i = 0;
outer: while (i < red.length) {
num = rd.nextInt(33) + 1;
for (int j = 0; j < red.length; j++) {
if (red[j] == num) {
System.out.println("已有数字,重来!");
continue outer;
}
}
red[i] = num;
i++;
}
// 随机一个蓝号
int blue = rd.nextInt(16) + 1;
// 打印结果
System.out.println("红号:" + Arrays.toString(red) + ";\n蓝号:" + blue);
}
}
// 已有数字,重来!
// 红号:[12, 18, 14, 32, 28, 16];
// 蓝号:14
编程题 自定义数组扩容规则,当已存储元素数量达到总容量的 80%时,扩容 1.5 倍。 例如,总容量是 10,当输入第 8 个元素时,数组进行扩容,容量从 10 变 15。
int i = 0;
do {
//数组添加元素
i += 1;
} while (i < 14);
int[] arr = new int[10];
int i = 0;
do {
// 判断继续添加元素是否会超过数组长度80%,结束循环时数组为[1, 2, 3, 4, 5, 6, 7, 8, 0, 0]
if ((i+1) * 1.0 / arr.length > 0.8) {
break;
}
// 数组赋值
arr[i] = i + 1;
System.out.printf("添加第%d个元素,当前数组长度为%d:%s\n", i + 1, arr.length, Arrays.toString(arr));
i += 1;
} while (i < 14);
package task01;
import java.util.Arrays;
public class Code0104 {
public static void main(String[] args) {
int[] arr = new int[10];
int i = 0;
do {
if ((i+1) * 1.0 / arr.length > 0.8) {
// break;
System.out.println("\n继续添加将超出数组容量80%,进行" + 1.5 + "倍扩容");
// 定义一个新数组,长度为原数组1.5倍
int[] newArr = new int[(int) (arr.length * 1.5)];
// 赋值原数组数据到新数组
System.arraycopy(arr, 0, newArr, 0, arr.length);
// 将原数组的对象引用指向新数组
arr = newArr;
}
arr[i] = i + 1;
System.out.printf("添加第%d个元素,当前数组长度为%d:%s\n", i + 1, arr.length, Arrays.toString(arr));
i += 1;
} while (i < 14);
}
}
// 添加第1个元素,当前数组长度为10:[1, 0, 0, 0, 0, 0, 0, 0, 0, 0]
// 添加第2个元素,当前数组长度为10:[1, 2, 0, 0, 0, 0, 0, 0, 0, 0]
// 添加第3个元素,当前数组长度为10:[1, 2, 3, 0, 0, 0, 0, 0, 0, 0]
// 添加第4个元素,当前数组长度为10:[1, 2, 3, 4, 0, 0, 0, 0, 0, 0]
// 添加第5个元素,当前数组长度为10:[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]
// 添加第6个元素,当前数组长度为10:[1, 2, 3, 4, 5, 6, 0, 0, 0, 0]
// 添加第7个元素,当前数组长度为10:[1, 2, 3, 4, 5, 6, 7, 0, 0, 0]
// 添加第8个元素,当前数组长度为10:[1, 2, 3, 4, 5, 6, 7, 8, 0, 0]
// 继续添加将超出数组容量80%,进行1.5倍扩容
// 添加第9个元素,当前数组长度为15:[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0]
// 添加第10个元素,当前数组长度为15:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0, 0, 0, 0]
// 添加第11个元素,当前数组长度为15:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 0]
// 添加第12个元素,当前数组长度为15:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0, 0]
// 继续添加将超出数组容量80%,进行1.5倍扩容
// 添加第13个元素,当前数组长度为22:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0]
// 添加第14个元素,当前数组长度为22:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0]
使用二维数组和循环实现五子棋游戏棋盘的绘制,具体如下:
// 定义二维数组
String[][] arr2 = new String[17][17];
// 行
for (int i = 0; i < arr2.length; i++) {
// 列
for (int j = 0; j < arr2[0].length; j++) {
// 赋值
arr2[i][j] = "+";
}
}
// 打印二维数组
for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr2[i].length; j++) {
System.out.print(arr2[i][j] + " ");
}
System.out.println();
}
// + + + + + + + + + + + + + + + + +
// + + + + + + + + + + + + + + + + +
// + + + + + + + + + + + + + + + + +
// + + + + + + + + + + + + + + + + +
// + + + + + + + + + + + + + + + + +
// + + + + + + + + + + + + + + + + +
// + + + + + + + + + + + + + + + + +
// + + + + + + + + + + + + + + + + +
// + + + + + + + + + + + + + + + + +
// + + + + + + + + + + + + + + + + +
// + + + + + + + + + + + + + + + + +
// + + + + + + + + + + + + + + + + +
// + + + + + + + + + + + + + + + + +
// + + + + + + + + + + + + + + + + +
// + + + + + + + + + + + + + + + + +
// + + + + + + + + + + + + + + + + +
// + + + + + + + + + + + + + + + + +
String[][] arr2 = new String[17][17];
for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr2[0].length; j++) {
// 首行判断
if (i == 0) {
// 赋值:当前列数-1,字符串格式化整数为十六进制
arr2[i][j] = String.format("%x", j - 1);
// 首列判断
} else if (j == 0) {
// 赋值:当前行数-1,字符串格式化整数为十六进制
arr2[i][j] = String.format("%x", i - 1);
// 其他则赋值+
} else {
arr2[i][j] = "+";
}
}
}
for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr2[i].length; j++) {
System.out.print(arr2[i][j] + " ");
}
System.out.println();
}
// ffffffff 0 1 2 3 4 5 6 7 8 9 a b c d e f
// 0 + + + + + + + + + + + + + + + +
// 1 + + + + + + + + + + + + + + + +
// 2 + + + + + + + + + + + + + + + +
// 3 + + + + + + + + + + + + + + + +
// 4 + + + + + + + + + + + + + + + +
// 5 + + + + + + + + + + + + + + + +
// 6 + + + + + + + + + + + + + + + +
// 7 + + + + + + + + + + + + + + + +
// 8 + + + + + + + + + + + + + + + +
// 9 + + + + + + + + + + + + + + + +
// a + + + + + + + + + + + + + + + +
// b + + + + + + + + + + + + + + + +
// c + + + + + + + + + + + + + + + +
// d + + + + + + + + + + + + + + + +
// e + + + + + + + + + + + + + + + +
// f + + + + + + + + + + + + + + + +
package task01;
public class Code0105 {
public static void main(String[] args) {
String[][] arr2 = new String[17][17];
for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr2[0].length; j++) {
if (i == 0) {
arr2[i][j] = String.format("%x", j - 1);
} else if (j == 0) {
arr2[i][j] = String.format("%x", i - 1);
} else {
arr2[i][j] = "+";
}
}
}
// 修改第一个元素为空格
arr2[0][0] = " ";
for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr2[i].length; j++) {
System.out.print(arr2[i][j] + " ");
}
System.out.println();
}
}
}
// 0 1 2 3 4 5 6 7 8 9 a b c d e f
// 0 + + + + + + + + + + + + + + + +
// 1 + + + + + + + + + + + + + + + +
// 2 + + + + + + + + + + + + + + + +
// 3 + + + + + + + + + + + + + + + +
// 4 + + + + + + + + + + + + + + + +
// 5 + + + + + + + + + + + + + + + +
// 6 + + + + + + + + + + + + + + + +
// 7 + + + + + + + + + + + + + + + +
// 8 + + + + + + + + + + + + + + + +
// 9 + + + + + + + + + + + + + + + +
// a + + + + + + + + + + + + + + + +
// b + + + + + + + + + + + + + + + +
// c + + + + + + + + + + + + + + + +
// d + + + + + + + + + + + + + + + +
// e + + + + + + + + + + + + + + + +
// f + + + + + + + + + + + + + + + +