第一題
?需求:
包裝類:鍵盤錄入一些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();//1234boolean 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);//1234System.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號//JDK7Calendar c = Calendar.getInstance();//設置時間為某年3月1日/*c.set(Calendar.YEAR,2000);c.set(Calendar.MONTH,2);//Calendar月份的范圍為0-11c.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是閏年}}
}