第1關:Object類
1、編程要求:
-
Demo
類和Person
類已經寫好,在測試類中創建Demo
類對象d1
,傳入輸入值num1
,d1
調用toString
方法並打印輸出該值; -
創建
Demo
類對象d2
,同樣傳入輸入值num1
,打印判斷d1
和d2
是否相等(實際是比較地址); -
創建
Person
類對象p
,傳入輸入值num2
,打印判斷d1
和p
是否相等(實際是比較地址);
2、測試說明:
補充完代碼后,點擊測評,平台會對你編寫的代碼進行測試,當你的結果與預期輸出一致時,即為通過。
測試輸入:
100
100
預期輸出:
Demo:100
true
false
3、代碼展示:
package case1; import java.util.Scanner; public class ObjectTest { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num1 = sc.nextInt(); int num2 = sc.nextInt(); // 在測試類中創建Demo類對象d1,傳入輸入值num1, d1調用toString方法並打印輸出該值 // 創建Demo類對象d2,同樣傳入輸入值num1,打印判斷d1和d2是否相等(實際是比較地址) /********* Begin *********/ Demo d1= new Demo(num1); System.out.println(d1); Demo d2=new Demo(num1); System.out.println(d1.equals(d2)); /********* End *********/ // 創建Person類對象p,傳入輸入值num2,打印判斷d1和p是否相等(實際是比較地址) /********* Begin *********/ Person p= new Person(num2); System.out.println(d1.equals(p)); /********* End *********/ } } class Demo { private int num; public Demo(int num) { this.num = num; } public boolean equals(Object obj) // Object obj = new Demo() { if (!(obj instanceof Demo)) // 判斷obj是否和Demo是同類 return false; Demo d = (Demo) obj; // 將父類的引用(Object)向下轉換為子類(Demo) return this.num == d.num; } public String toString() { return "Demo:" + num; // 返回對象的值(每一個對象都有自己的特定的字符串) } } class Person { private int num; public Person(int num) { this.num = num; } }
第2關:JAVA基礎類型包裝類-練習
1、編程要求:
-
編寫測試類,輸入
int
型值aa
傳遞給Integer
類對象a
,String
型值bb
傳遞給Integer
類對象b
,輸入int
型值c
,aa
、bb
、c
對應的數值相等; -
輸入
String
型值str11
傳遞給String
類對象str1
,輸入String
型值str22
傳遞給String
類對象str2
,str1
和str2
對應的內容相同; -
打印輸出
a == b
、a == c
、b == c
、a.equals(b)
; -
打印輸出
str1 == str2
、str1.equals(str2)
。
2、測試效果:
補充完代碼后,點擊測評,平台會對你編寫的代碼進行測試,當你的結果與預期輸出一致時,即為通過。
測試輸入:
100
100
100
educoder
educoder
預期輸出:
false
true
true
true
false
true
3、代碼展示:
package case2; import java.util.Scanner; public class WrapperTest { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int aa = sc.nextInt(); Integer a= new Integer(aa); String bb = sc.next(); Integer b= new Integer(bb); int c = sc.nextInt(); String str11 = sc.next(); String str1 = str11; String str22 = sc.next(); String str2 = str22; // 包裝類中“==”與equals的用法比較 // 值得注意的是,包裝類中的equals方法和String類一樣,都是重寫了Object類中的equals方法,因此比較的是內容而不是地址, // 而“==”比較的依然是引用變量的地址,只是當包裝類型和與之相對應的基本類型進行“==”比較時會先做自動拆箱處理。 /********* Begin *********/ System.out.println(a==b); System.out.println(a==c); System.out.println(b==c); System.out.println(a.equals(b)); System.out.println(str1 ==str2); System.out.println(str1.equals(str2)); /********* End *********/ } }
第3關:String&StringBuilder&StringBuffer類-練習
1、編程要求:
-
編寫測試類,輸入一個標准的網址,輸出其域名的主體;
-
將該主體轉換為大寫,打印輸出;
-
具體輸出要求請看測試說明。
2、測試效果:
補充完代碼后,點擊測評,平台會對你編寫的代碼進行測試,當你的結果與預期輸出一致時,即為通過。
測試輸入:
https://www.educoder.net/
預期輸出:
educoder
EDUCODER
3、代碼展示:
package case3; import java.util.Scanner; public class StringTest { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); // String substring(int start,int end) // 截取字符串,傳入的兩個參數分別為要截取邊界的下標 // 在java api 中,通常使用兩個數字表示范圍時,都是含頭不含尾,即包含起始下標對應的內容,但不包含結束下標的處對應的內容 // String toUpperCase() 將當前字符串中的英文部分轉換為全大寫 /********* Begin *********/ int a=str.indexOf(".",12); String str1 =str.substring(12,a); System.out.println(str1); System.out.println(str1.toUpperCase()); /********* End *********/ } }
第4關:Random類
1、編程要求:
-
設計一個密碼的自動生成器:密碼由大寫字母/小寫字母/數字組成,生成六位隨機密碼。
-
分別以
1
、2
、3
作為種子數創建Random
對象,生成六位隨機密碼進行測試。 -
具體輸出要求請看測試說明。
2、測試效果:
測試輸入: 1
預期輸出: NAvZuG
3、代碼展示:
package case4; //密碼的自動生成器:密碼由大寫字母/小寫字母/數字組成,生成六位隨機密碼 import java.util.Random; import java.util.Scanner; public class RandomTest { public static void main(String[] args) { // 定義一個字符型數組 char[] pardStore = new char[62]; // 把所有的大寫字母放進去 把所有的小寫字母放進去 把0到9放進去 /********* Begin *********/ for (int i = 0; i < 26; i++) { pardStore[i]=(char)('A'+i); } for (int i = 26; i < 52; i++) { pardStore[i]=(char)('a'+(i-26)); } for (int i = 52; i < 62; i++) { pardStore[i]=(char)('0'+(i-52)); } /********* End *********/ // 分別以1、2、3作為種子數 生成6位隨機密碼 Scanner sc = new Scanner(System.in); int seed = sc.nextInt(); /********* Begin *********/ Random r= new Random(seed); for (int i = 0; i < 6; i++) { int n = r.nextInt(62); System.out.print(pardStore[n]); } /********* End *********/ } }
第5關:Date類和SimpleDateFormat類的用法
1、編程要求:
-
編寫測試類,算一下你的出生日期到2020年10月1日總共有多少天;
-
具體輸出要求請看測試說明。
2、測試說明:
測試輸入:
1999-09-01
預期輸出:
你的出生日期距離2020年10月1日:7701天
3、代碼展示:
package case5; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; public class DateTest { public static void main(String[] args) throws ParseException { // 鍵盤錄入你的出生年月日 格式為yyyy-MM-dd // 把該字符串轉換為一個日期 // 通過該日期得到一個毫秒值 // 獲取2020年10月1日的毫秒值 // 兩者想減得到一個毫秒值 // 把該毫秒值轉換為天 打印輸出 Scanner sc = new Scanner(System.in); String line = sc.nextLine(); /********* Begin *********/ // 將字符串轉換為date類型 SimpleDateFormat StoDate = new SimpleDateFormat("yyyy-MM-dd"); Date birthdayDate = StoDate.parse(line); // 獲取當前日期 Date nowDate = StoDate.parse("2020-10-01"); // 轉為毫秒值進行換算 long nowSecond = nowDate.getTime(); long birthdaySecond = birthdayDate.getTime(); long second = nowSecond-birthdaySecond; System.out.println("你的出生日期距離2020年10月1日:"+second/1000/60/60/24+"天"); /********* End *********/ } }
第6關:Math類
1、編程要求:
-
編寫測試類
MathTest
,輸入4
個int
類型數值,7
個double
類型數值; -
分別輸出第一個數的平方根,第二個數的立方根,第三個數的第四個數次方,第五個數和第六個數的最大值、最小值,第七個數的絕對值,第八個數的
ceil
值,第九個數的floor
值,第十個數的rint
值,第十一個數的round
值。
2、測試說明:
測試輸入:
25
27
4
3
3.5
5.5
-8.8
10.8
9.6
10.62
11.51
預期輸出:
5.0
3.0
64.0
5.5
3.5
8.8
11.0
9.0
11.0
12
3、代碼展示:
package case6; import java.util.Scanner; import java.lang.Math; public class MathTest { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a1 = sc.nextInt(); int a2 = sc.nextInt(); int a3 = sc.nextInt(); int a4 = sc.nextInt(); double a5 = sc.nextDouble(); double a6 = sc.nextDouble(); double a7 = sc.nextDouble(); double a8 = sc.nextDouble(); double a9 = sc.nextDouble(); double a10 = sc.nextDouble(); double a11 = sc.nextDouble(); /********* Begin *********/ System.out.println(Math.sqrt(a1)); System.out.println(Math.cbrt(a2)); System.out.println(Math.pow(a3,a4)); System.out.println(Math.max(a5,a6)); System.out.println(Math.min(a5,a6)); System.out.println(Math.abs(a7)); System.out.println(Math.ceil(a8)); System.out.println(Math.floor(a9)); System.out.println(Math.rint(a10)); System.out.println(Math.round(a11)); /********* End *********/ } }