Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

โปรแกรม Java เปรียบเทียบสตริงสองตัว (Implement compareTo เอง)


บทนำ

ในบทความนี้ เราจะเรียนรู้วิธีการเปรียบเทียบสตริงสองตัว การเปรียบเทียบระหว่างสตริงสองตัวสามารถทำได้โดยใช้ตัวดำเนินการเลขคณิต '==' สตริงเป็นลำดับของตัวอักษร ในภาษา Java สตริงถูกจัดการเป็นออบเจ็กต์

หมายเหตุ: บทความนี้แสดงการ implement เมธอด compareTo() เองด้วยตนเอง (Manual implementation) ไม่ใช่การใช้เมธอดสำเร็จรูป

ตัวอย่างการทำงาน

อินพุทตัวอย่าง:

Second string : Java Program
First string : Java

เอาต์พุทที่คาดหวัง:

The result of string comparison is: 8

อัลกอริทึม

ขั้นตอนที่ 1 - เริ่มต้น
ขั้นตอนที่ 2 - ประกาศตัวแปร
ขั้นตอนที่ 3 - กำหนดค่า
ขั้นตอนที่ 4 - คำนวณความยาวสตริง หาค่าต่ำสุด กำหนดให้ตัวแปร
ขั้นตอนที่ 5 - วนลูปผ่านค่านั้น หาตัวอักษรที่ดัชนีแต่ละค่าในทั้งสองสตริง แปลงเป็น int เปรียบเทียบ
ขั้นตอนที่ 6 - หาความต่างของตัวเลขระหว่างตัวอักษรเหล่านั้น คืนค่าเป็นผลลัพธ์
ขั้นตอนที่ 7 - แสดงผลลัพธ์
ขั้นตอนที่ 8 - จบการทำงาน

ตัวอย่างที่ 1: เขียนในฟังก์ชัน main โดยตรง

public class CompareStrings {
    public static void main(String args[]) {
        String input_string_1 = new String("Java Program");
        System.out.println("The string is defined as: " + input_string_1);
        String input_string_2 = new String("Java");
        System.out.println("The string is defined as: " + input_string_2);
        int length_1 = input_string_1.length();
        int length_2 = input_string_2.length();
        int minimum_length = Math.min(length_1, length_2);
        int result = 0;
        for (int i = 0; i < minimum_length; i++) {
            int character_1 = (int)input_string_1.charAt(i);
            int character_2 = (int)input_string_2.charAt(i);
            if (character_1 != character_2) {
                result = character_1 - character_2;
                break;
            }
        }
        if (result == 0 && length_1 != length_2) {
            result = length_1 - length_2;
        }
        System.out.println("\nThe result of string comparison is: " + result);
    }
}

เอาต์พุท

The string is defined as: Java Program
The string is defined as: Java
The result of string comparison is: 8

ตัวอย่างที่ 2: ใช้เมธอดแยก (Object-Oriented Style)

public class CompareStrings {
    public static int string_compare(String input_string_1, String input_string_2) {
        int length_1 = input_string_1.length();
        int length_2 = input_string_2.length();
        int minimum_length = Math.min(length_1, length_2);
        for (int i = 0; i < minimum_length; i++) {
            int character_1 = (int)input_string_1.charAt(i);
            int character_2 = (int)input_string_2.charAt(i);
            if (character_1 != character_2) {
                return character_1 - character_2;
            }
        }
        if (length_1 != length_2) {
            return length_1 - length_2;
        } else {
            return 0;
        }
    }
    
    public static void main(String args[]) {
        String input_string_1 = new String("Java Program");
        System.out.println("The string is defined as: " + input_string_1);
        String input_string_2 = new String("Java");
        System.out.println("The string is defined as: " + input_string_2);
        System.out.println("\nThe result of string comparison is: " + string_compare(input_string_1, input_string_2));
    }
}

เอาต์พุท

The string is defined as: Java Program
The string is defined as: Java
The result of string comparison is: 8

ตรรกะการทำงาน (เหมือน String.compareTo()):

  1. เปรียบเทียบตัวอักษรทีละคู่จากซ้ายไปขวา
  2. หากเจอตัวอักษรที่ต่างกัน → คืนค่าความต่าง Unicode (char1 - char2)
  3. หากตัวอักษรทุกคู่เหมือนกัน → คืนค่าความต่างความยาว (len1 - len2)
  4. หากทั้งสองอย่างเหมือนกัน → คืนค่า 0

การใช้งานจริง: ควรใช้ String.compareTo() ตัวจริง ซึ่งได้รับการ optimize และทดสอบแล้ว