常用API——练习
- 练习1 键盘录入:
- 练习2 算法水题:
- 练习3 算法水题:
- 练习4 算法水题:
- 练习5 算法水题:
练习1 键盘录入:
键盘录入一些1~100之间的整数,并添加到集合中。
直到集合中所有数据和超过200为止
public static void main(String[] args) {
/*键盘录入一些1~100之间的整数,并添加到集合中。
直到集合中所有数据和超过200为止*/
//0.创建一个集合用来添加数据
ArrayList<Integer> list = new ArrayList<>();
//1.键盘录入数据
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入一个整数:");
String numStr = sc.nextLine();
int num = Integer.parseInt(numStr);
//数据异常判断
if (num < 1 || num > 100) {
System.out.println("当前数字不在1~100的范围当中,请重新输入!");
continue;
}
/*将数据添加到集合中
* 细节:
* num:基本数据类型
* 集合里面的数据是Integer
* 在添加数据的时候触发了自动装箱*/
list.add(num);
//统计数据中所有的数据和
int sum = getSum(list);
//对sum进行判断
if (sum > 200){
System.out.println("集合中所有的数字满足要求!");
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 += num;
}
return sum;
}
练习2 算法水题:
自己实现parseInt方法的效果,将字符串形式的数据转成整数。
要求:
- 字符串中只能是数字不能有其他字符
- 最少一位,最多10位
- 0不能开头
public static void main(String[] args) {
/*自己实现parseInt方法的效果,将字符串形式的数据转成整数。
要求:
字符串中只能是数字不能有其他字符
最少一位,最多10位
0不能开头*/
//0.定义一个字符串
String str = "123456789";
//1.校验字符串
//习惯:会先把异常数据进行过滤,剩下来就是正常的数据
if (!str.matches("[1-9]\\d{0,9}")) {
//错误的数据
System.out.println("数据格式有误");
} else {
//正确的数据
System.out.println("数据格式正确");
//2. 定义一个变量表示最终的结果
int num = 0;
//3.遍历字符串得到里面的每一个字符
for (int i = 0; i < str.length(); i++) {
int c = str.charAt(i) - '0';
num = num * 10 + c;
}
System.out.println(num);
}
}
练习3 算法水题:
定义一个方法自己实现toBinaryString方法的效果,将一个十进制整数转成字符串表示的二进制
public static void main(String[] args) {
/*定义一个方法自己实现toBinaryString方法的效果,将一个十进制整数转成字符串表示的二进制*/
System.out.println(toBinaryString(123));
//验证
System.out.println(Integer.toBinaryString(123));
}
private static String toBinaryString(int num) {
/*核心逻辑:不断地去除以2,得到余数,一直到商为0就结束
* 需要把余数倒着拼接起来*/
//0.定义一个StringBuilder()用来 拼接余数
StringBuilder sb = new StringBuilder();
//1.利用循环不断地除以2获取余数
while (true){
if (num==0) break;
//获取余数
int remaindar = num % 2;
//倒着拼接
sb.insert(0,remaindar);
//除以2
num = num / 2;
}
return sb.toString();
}
练习4 算法水题:
请使用代码实现计算你活了多少天,用JDK7和JDK8两种方法实现
public static void main(String[] args) throws ParseException {
//请使用代码实现计算你活了多少天,用JDK7和JDK8两种方法实现
//JDK7
//规则:只要对时间进行计算或者判断,都需要先获取当前时间的毫秒值
//0.计算出生年月日的毫秒值
String birthday = "2002年4月11日";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
Date date = sdf.parse(birthday);
long birthdaytime = date.getTime();
//1.获取当前时间的毫秒值
long todayTime = System.currentTimeMillis();
//2.计算间隔多少天
long time = todayTime - birthdaytime;
System.out.println(time / 1000 / 60 / 60 / 24 + "天");
//--------------------------
//JDK8
LocalDate d1 = LocalDate.of(2002, 4, 11);
LocalDate d2 = LocalDate.now();
long days = ChronoUnit.DAYS.between(d1, d2);
System.out.println(days + "天");
}
练习5 算法水题:
判断任意的一个年份是闰年还是平年
要求:用JDK7和JDK8两种方式判断
提示:
- 二月有29天是闰年
- 一年又366天是闰年
public static void main(String[] args) {
/*判断任意的一个年份是闰年还是平年
要求:用JDK7和JDK8两种方式判断
提示:
* 二月有29天是闰年
* 一年又366天是闰年*/
//JDK7
//方法1:
JDK7Method1();
//方法2:
JDK7Method2();
//JDK8
//方法1:
JDK8Method1();
//方法2:
//把时间设置为2000年3月1日
LocalDate ld = LocalDate.of(2000, 3, 1);
//true:闰年 false:平年
boolean result = ld.isLeapYear();
System.out.println(result);
if (result){
System.out.println(ld.getYear() + "年是闰年!");
}else {
System.out.println(ld.getYear() + "年是平年!");
}
}
private static void JDK8Method1() {
//把时间设置为2000年3月1日
LocalDate ld = LocalDate.of(2000, 3, 1);
//再把日历往前减一天
LocalDate ld2 = ld.minusDays(1);
//看当前的时间是28号还是29号?
int dayOfMonth = ld2.getDayOfMonth();
System.out.println(dayOfMonth);
if (dayOfMonth==29){
System.out.println(ld2.getYear() + "年是闰年!");
}else {
System.out.println(ld2.getYear() + "年是平年!");
}
}
private static void JDK7Method2() {
/*简化2:
* 我们可以把时间设置为2001年1月1日*/
Calendar c = Calendar.getInstance();
c.set(2001,0,1);
//再把日历往前减一天
c.add(Calendar.DAY_OF_MONTH, -1);
//看当前的时间是有366天还是365天
int dayofYear = c.get(Calendar.DAY_OF_YEAR);
System.out.println(dayofYear);
if (dayofYear==366){
System.out.println(c.get(Calendar.YEAR) + "年是闰年!");
}else {
System.out.println(c.get(Calendar.YEAR) + "年是平年!");
}
}
private static void JDK7Method1() {
/*简化1:
* 我们可以把时间设置为2000年3月1日*/
Calendar c = Calendar.getInstance();
c.set(2000,2,1);
//再把日历往前减一天
c.add(Calendar.DAY_OF_MONTH,-1);
//看当前的时间是28号还是29号?
int day = c.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
if (day==29){
System.out.println(c.get(Calendar.YEAR) + "年是闰年!");
}else {
System.out.println(c.get(Calendar.YEAR) + "年是平年!");
}
}