Educoder -Java面向對象 - 常用類


第1關:Object類

   1、編程要求:   

  • Demo類和Person類已經寫好,在測試類中創建Demo類對象d1,傳入輸入值num1d1調用toString方法並打印輸出該值;

  • 創建Demo類對象d2,同樣傳入輸入值num1,打印判斷d1d2是否相等(實際是比較地址);

  • 創建Person類對象p,傳入輸入值num2,打印判斷d1p是否相等(實際是比較地址);

 

  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類對象aString型值bb傳遞給Integer類對象b,輸入int型值caabbc對應的數值相等;

  • 輸入String型值str11傳遞給String類對象str1,輸入String型值str22傳遞給String類對象str2str1str2對應的內容相同;

  • 打印輸出a == ba == cb == ca.equals(b)

  • 打印輸出str1 == str2str1.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、編程要求:

  • 設計一個密碼的自動生成器:密碼由大寫字母/小寫字母/數字組成,生成六位隨機密碼。

  • 分別以123作為種子數創建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,輸入4int類型數值,7double類型數值;

  • 分別輸出第一個數的平方根,第二個數的立方根,第三個數的第四個數次方,第五個數和第六個數的最大值、最小值,第七個數的絕對值,第八個數的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 *********/
    }
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM