练习一:
键盘录入一些1~100的整数,并添加到集合中
直到集合中所有数据的和超过200为止
代码:
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) {
System.out.println("请输入一个1~100内的整数:");
String numStr = sc.nextLine();
//将字符串转成整数
int num = Integer.parseInt(numStr);
if(num < 1 || num > 100) {
System.out.println("输入的整数不在范围1~100内,请重新输入:");
}
list.add(num);
int sum = getListSum(list);
if(sum > 200) {
System.out.println("集合中所有的数据和超过200,录入结束");
break;
}
}
}
//定义方法求集合中数据的和
public static int getListSum(ArrayList<Integer> list) {
int sum = 0;
for (int i = 0; i < list.size(); i++) {
int num = list.get(i);
sum = sum + num;
}
return sum;
}
}
运行结果:
练习二:
实现parseInt方法的效果,将字符串形似的数据转成整数
要求:
字符串中只能含数字
最少一位,最多十位
0不能开头
代码:
public class Test2 {
public static void main(String[] args) {
/*
实现parseInt方法的效果,将字符串形似的数据转成整数
要求:
字符串中只能含数字
最少一位,最多十位
0不能开头
*/
//定义一个字符串
String str = "135792468";
//校验字符串
if(!str.matches("[1-9]\\d{0,9}")) {
System.out.println("输入的数据格式有误");
} else {
int number = 0;
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
int num = c - 48;
number = number * 10 + num;
}
System.out.println(number);
System.out.println(number + 1);
}
}
}
运算结果:
练习三:
键盘录入一个整数
将一个十进制的整数转换成一个二进制的字符串形式
代码:
public class Test3 {
public static void main(String[] args) {
/*
键盘录入一个整数
将一个十进制的整数转换成一个二进制的字符串形式
*/
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
String numStr = sc.nextLine();
//检验字符串是否为整数
if(!numStr.matches("[1-9]\\d{0,}")) {
System.out.println("输入的数据格式不符合要求,请重新输入:");
} else {
int number = Integer.parseInt(numStr);
String binaryString = toBinaryString(number);
System.out.println(binaryString);
System.out.println(Integer.toBinaryString(number));
}
}
public static String toBinaryString(int number) {
StringBuilder sb = new StringBuilder();
while(true) {
if(number == 0) {
break;
}
int remainder = number % 2;
sb.append(remainder);
number = number / 2;
}
sb.reverse();
String result = sb.toString();
return result;
}
}
运算结果:
练习四:
输入生日“yyyy年MM月dd日”,代码就可以给出活了多少天,使用JDK7和JDK8两种方式完成
代码:
public class Test4 {
public static void main(String[] args) throws ParseException {
//输入生日“yyyy年MM月dd日”,代码就可以给出活了多少天,使用JDK7和JDK8两种方式完成
//JDK7
Scanner sc = new Scanner(System.in);
System.out.println("请输入出生日期:");
String birthdayStr = sc.nextLine();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
Date date = sdf.parse(birthdayStr);
long birthdayTime = date.getTime();
long todayTime = System.currentTimeMillis();
long day = (todayTime - birthdayTime) / 1000 / 60 / 60 / 24;
System.out.println(day);
//JDK8
LocalDate ld1 = LocalDate.of(2003,9,1);
LocalDate ld2 = LocalDate.now();
long result = ChronoUnit.DAYS.between(ld1, ld2);
System.out.println(result);
}
}
运算结果:
练习五:
输入一个年份,判断这个年份是闰年还是平年
要求:用JDK7和JDK8两种方式判断
提示:二月有29天是闰年,一年有366天是闰年
代码:
public class Test5 {
public static void main(String[] args) {
/*
输入一个年份,判断这个年份是闰年还是平年
要求:用JDK7和JDK8两种方式判断
提示:二月有29天是闰年,一年有366天是闰年
*/
Scanner sc = new Scanner(System.in);
System.out.println("请输入要判断的年份:");
int year = 0;
while (true) {
String yearStr = sc.nextLine();
if(!yearStr.matches("[1-9]\\d{0,3}")) {
System.out.println("输入的年份不符合要求,请重新输入:");
continue;
}
year = Integer.parseInt(yearStr);
break;
}
//思路:将那一年的3月1号减一天再通过日期是28还是29判断平年闰年
//JDK7
Calendar c = Calendar.getInstance();
c.set(year,2,1);//Calendar中月份范围是0~11
c.add(Calendar.DAY_OF_MONTH,-1);
int day1 = c.get(Calendar.DAY_OF_MONTH);
if(day1 == 28) {
System.out.println(year + "年是平年");
} else {
System.out.println(year + "年是闰年");
}
//JDK8
LocalDate ld1 = LocalDate.of(year,3,1);
LocalDate ld2 = ld1.minusDays(1L);
int day2 = ld2.getDayOfMonth();
if(day2 == 28) {
System.out.println(year + "年是平年");
} else {
System.out.println(year + "年是闰年");
}
//JDK8 自带的判断闰年的方法
//闰年:true
//平年:false
boolean result = ld1.isLeapYear();
System.out.println(result);
}
}
运算结果: