第一题
需求:
包装类:键盘录入一些1~100之间的整数,并添加到集合中。直到集合中所有数据和超过200为止
代码实现:
import java.util.ArrayList;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
//键盘录入一些1~100之间的整数,并添加到集合中。
//直到集合中所有数据和超过200为止
//定义集合
ArrayList<Integer> list = new ArrayList<>();
//键盘录入
Scanner sc = new Scanner(System.in);
while (true) {
String numStr = sc.nextLine();
int num = Integer.parseInt(numStr);
if (num < 1 || num > 100) {
System.out.println("输入数字范围有误,请重新输入");
continue;
}
list.add(num);
//调用方法计算集合中所有数据和
int sum = getSum(list);
if (sum > 200) {
break;
}
}
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " ");
}
}
//定义方法计算集合中所有数据和
private static int getSum(ArrayList<Integer> list) {
int sum = 0;
for (int i = 0; i < list.size(); i++) {
int num = list.get(i);
sum = sum + num;
}
return sum;
}
}
第二题
需求:
自己实现parselnt方法的效果,将字符串形式的数据转成整数。
要求:
字符串中只能是数字不能有其他字符
最少一位,最多10位
0不能开头
代码实现:
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
//自己实现parselnt方法的效果,将字符串形式的数据转成整数。
//要求:
//字符串中只能是数字不能有其他字符
//最少一位,最多10位
//0不能开头
Scanner sc = new Scanner(System.in);
String regex = "[1-9]\\d{0,9}";
String str;
while (true) {
System.out.println("请输入字符串");
str = sc.nextLine();//1234
boolean flag = str.matches(regex);
if (flag) {
break;
}
System.out.println("字符串不符合要求");
}
int result = 0;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
int num = c - '0';
result = result * 10 + num;
}
System.out.println(result);//1234
System.out.println(result + 1);//1235
}
}
第三题
需求:
定义一个方法实现toBinaryString方法的效果,将一个十进制整数转成字符串表示的二进制
除基取余法:
不断的除以基数(几进制,基数就是几)得到余数,
直到商为0,再将余数倒着拼起来即可。
代码实现:
public class Test3 {
public static void main(String[] args) {
//定义一个方法自己实现toBinaryString方法的效果,将一个十进制整数转成字符串表示的二进制
//除基取余法
//不断的除以基数(几进制,基数就是几)得到余数,
//直到商为0,再将余数倒着拼起来即可。
//自定义方法
System.out.println(toBinaryString(123));//1111011
//Integer中的方法
System.out.println(Integer.toBinaryString(123));//1111011
}
public static String toBinaryString(int num) {
//定义StringBuilder便于拼接
StringBuilder sb = new StringBuilder();
while (num != 0) {
//得到余数
int result = num % 2;
//将余数倒着拼起来相当于每一个数都拼在前面
sb.insert(0, result);
//除以基数
num = num / 2;
}
return sb.toString();
}
}
第四题
需求:
请使用代码计算你出生到现在经历多少天,用JDK7和JDK8两种方式完成
代码实现:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.Date;
public class Test4 {
public static void main(String[] args) throws ParseException {
//请使用代码计算你出生到现在经历多少天,用JDK7和JDK8两种方式完成
//JDK7
//利用字符串定义出生的日期
String birthStr = "2000-3-5";
//解析为日期对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date birth = sdf.parse(birthStr);
//或得毫秒值
long birthTime = birth.getTime();
//获得现在时间
Date now = new Date();
long nowTime = now.getTime();
//相减
long time = nowTime - birthTime;
System.out.println(time / 1000 / 60 / 60 / 24);//9183
//JDK8
//利用工具类ChronoUnit
//获得现在时间
LocalDate ld1 = LocalDate.now();
//获得出生的时间
LocalDate ld2 = LocalDate.of(2000, 3, 5);
long result = ChronoUnit.DAYS.between(ld2, ld1);
System.out.println(result);//9183
}
}
第五题
需求:
判断任意的一个年份是闰年还是平年
要求:用JDK7和JDK8两种方式判断
提示:二月有29天是闰年
代码实现:
import java.time.LocalDate;
import java.util.Calendar;
public class Test5 {
public static void main(String[] args) {
//判断任意的一个年份是闰年还是平年
//要求:用JDK7和JDK8两种方式判断
//提示:
//二月有29天是闰年
//思路:
//让3月1日减一天,看是否是29号
//JDK7
Calendar c = Calendar.getInstance();
//设置时间为某年3月1日
/*c.set(Calendar.YEAR,2000);
c.set(Calendar.MONTH,2);//Calendar月份的范围为0-11
c.set(Calendar.DAY_OF_MONTH,1);*/
c.set(2000, 2, 1);
//将其减1天
c.add(Calendar.DAY_OF_MONTH, -1);
//判断是否是29号
int day = c.get(Calendar.DAY_OF_MONTH);
if (day == 29) {
System.out.println(c.get(Calendar.YEAR) + "是闰年");//2000是闰年
}
//JDK8
//设置时间为某年3月1日
LocalDate ld1 = LocalDate.of(2000, 3, 1);//LocalDate月份的范围为1-12
//将其减1天
LocalDate ld2 = ld1.minusDays(1);
//判断是否是29号
int dayOfMonth = ld2.getDayOfMonth();
if (dayOfMonth == 29) {
System.out.println(ld2.getYear() + "是闰年");//2000是闰年
}
//JDK8有判断是否是闰年的方法
//true:是闰年,false:不是闰年
boolean flag = ld1.isLeapYear();
if (flag) {
System.out.println(ld1.getYear() + "是闰年");//2000是闰年
}
}
}