5.1.需求:
键盘录入一些1~10日之间的整数,并添加到集合中。直到集合中所有数据和超过200为止。\
public class Test1 {
public static void main(String[] args) {
/*
键盘录入一些1~10日之间的整数,并添加到集合中。直到集合中所有数据和超过200为止。
*/
//1.创建一个集合用来添加整数
ArrayList<Integer> list = new ArrayList<>();
//2.键盘录入数据添加到集合中
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;
}
}
}
private static int getSum(ArrayList<Integer> list) {
int sum = 0;
for (int i = 0; i < list.size(); i++) {
//i :索引
//list.get(i);
int num = list.get(i);
sum = sum + num;//+=
}
return sum;
}
}
2.需求:
自己实现parseInt方法的效果,将字符串形式的数据转成整数。要求:字符串中只能是数字不能有其他字符最少一位,最多10位日不能开头
public class Test2 {
public static void main(String[] args) {
/*
自己实现parseInt方法的效果,将字符串形式的数据转成整数。要求:
字符串中只能是数字不能有其他字符最少一位,最多10位日不能开头
*/
//1.定义一个字符串
String str = "123";
//2.校验字符串
//习惯:会先把异常数据进行过滤,剩下来就是正常的数据。
if (!str.matches("[1-9]\\d{0,9}")) {
//错误的数据
System.out.println("数据格式有误");
} else {
//正确的数据
System.out.println("数据格式正确");
//3.定义一个变量表示最终的结果
int number = 0;
//4.遍历字符串得到里面的每一个字符
for (int i = 0; i < str.length(); i++) {
int c = str.charAt(i) - '0';//把每一位数字放到number当中
number = number * 10 + c;
}
System.out.println(number);
System.out.println(number + 1);
}
}
3.需求:
定义一个方法自己实现toBinaryString方法的效果,将一个十进制整数转成字符串表示的二进制
package lx;
public class demo3 {
public static void main(String[] args) {
//定义一个方法自己实现toBinaryString方法的效果,将一个十进制整数转成字符串表示的二进制
int a = 6;
//method01(a);
/* String s = decimalToBinary(a);
System.out.println(s);*/
String str = toBinaryString(a);
System.out.println(str);
}
private static String toBinaryString(int n) {
StringBuffer sb = new StringBuffer();
while (n != 0) {
sb.append(n % 2);
n = n / 2;
}
sb.reverse();
return sb.toString();
}
private static String decimalToBinary(int n) {
// 定义一个标志,用来跳过前导零
int foundFirstOne = 0;
StringBuffer sb = new StringBuffer();
int bit = 0;
// 特别处理0的情况
if (n == 0) {
System.out.println(0);
System.exit(0);
}
//0000000000000000 0000000000000000 0000000000000000 0000000000001010
//0000000000000000 0000000000000000 0000000000000000 0000000000000001
// 从最高位开始向最低位打印二进制表示
for (int i = 31; i >= 0; i--) {
// 右移i位后,检查最低位是否为1
bit = (n >> i) & 1;
// 找到第一个1后开始输出
if (bit == 1) {
foundFirstOne = 1;
}
// 输出当前位
if (foundFirstOne == 1) {
sb.append(bit);
}
}
return sb.toString();
}
private static void method01(int a) {
String str = Integer.toBinaryString(a);
System.out.println(str);
}
}
4.需求:
请使用代码实现计算你活了多少天,用JDK7和JDK8两种方式完成
package lx;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.Date;
public class demo4 {
public static void main(String[] args) throws ParseException {
//请使用代码实现计算你活了多少天,用JDK7和JDK8两种方式完成
//JDK7
//规则:只要对时间进行计算或者判断,都需要先获取当前时间的毫秒值
//1.计算出生年月日的毫秒值
String birthday = "2002年9月19日";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
Date date = sdf.parse(birthday);
long birthdaytime = date.getTime();
Date d=new Date();
long time = d.getTime();
long sum = time - birthdaytime;
sum=sum/1000/60/60/24;
System.out.println(sum);
//JDK8
LocalDate ld1=LocalDate.now();
LocalDate ld2=LocalDate.of(2002,9,19);
long day = ChronoUnit.DAYS.between(ld2, ld1);
System.out.println(day);
}
}
5.需求:
判断任意的一个年份是闰年还是平年要求:用JDK7和JDK8两种方式判断提示:二月有29天是闰年一年有366天是闰年
package lx;
/*
判断任意的一个年份是闰年还是平年要求:用JDK7和JDK8两种方式判断提示:
二月有29天是闰年一年有366天是闰年
*/
import java.time.LocalDate;
import java.util.Calendar;
public class dem05 {
public static void main(String[] args) {
//jdk7
//我们可以把时间设置为2002年3月1日
Calendar c=Calendar.getInstance();
c.set(2002,2,1); //月份的范围:0~11
//再把日历往前减一天
c.add(Calendar.DAY_OF_MONTH,-1);
//看当前的时间是28号还是29号?
int day1 = c.get(Calendar.DAY_OF_MONTH);
System.out.println(day1);//平年
//jdk8
//月份的范围:1~12
//设定时间为2002年的3月1日
LocalDate ld1=LocalDate.of(2002,3,1);
//把时间往前减一天
LocalDate ld2 = ld1.minusDays(1);
//获取这一天是一个月中的几号
int day2 = ld2.getDayOfMonth();
System.out.println(day2);
//true:闰年
//false:平年
System.out.println(ld1.isLeapYear());
}
}