Heim  >  Artikel  >  Java  >  Java-Lernreise

Java-Lernreise

Susan Sarandon
Susan SarandonOriginal
2024-10-19 18:20:02332Durchsuche

Java Learning Journey

Ich habe kürzlich Java durch die Übungen in [https://exercism.org/tracks/java/exercises] gelernt. Mein aktueller Fortschritt liegt bei 13 von insgesamt 148 Übungen. Ich möchte gerne teilen, was ich gelernt habe.

Dieser Beitrag stellt mein Verständnis über .split(), .trim(), .isDigit(), .isLetter(), Comparable, benutzerdefinierte Java-Ausnahmen und Schnittstelle vor.

1) .split()

Definition: Die .split()-Methode unterteilt String basierend auf dem Trennzeichen [1] in ein Array.

Syntax:

public String[] split(String regex, int limit)

Parameter:

  • Regex: (erforderliches Feld) Muster des Trennzeichens
  • Limit: (optionales Feld) maximale Länge des zurückgegebenen Arrays

Beispiel:

public class Main{

    public void getProductPrice(String products){
        double totalPrice = 0.0;
        StringBuilder priceDetails = new StringBuilder();

        String[] singleProduct = products.split("; ");

        for(int i = 0; i < singleProduct.length; i++){
            String[] productInfo = singleProduct[i].split(", ");
            totalPrice += Double.parseDouble(productInfo[2]);

            priceDetails.append(productInfo[2]);
            if(i < singleProduct.length - 1){
                priceDetails.append(" + ");
            }
        }

        System.out.println(priceDetails + " = " + totalPrice);
    }

    public static void main(String arg[]){
        Main obj = new Main();
        obj.getProductPrice("1, dragonfruit, 12.50; 2, guava, 23.45; 3, avocado, 395.67");
    }

}

Ausgabe:

12.50 + 23.45 + 395.67 = 431.62

2) .trim()

Definition: Die .trim()-Methode entfernt Leerzeichen an beiden Enden einer Zeichenfolge [2].

Syntax:

public String trim()

Parameter:

  • kein Parameter

Beispiel:

public class Main{
    public static void main(String args[]){
        String str = "   You can do it!   ";
        System.out.println(str);
        System.out.println(str.trim());
    }
}

Ausgabe:

   You can do it!   
You can do it!

3) .isDigit()

Definition: Die Methode .isDigit() bestimmt, ob ein Zeichen eine Ziffer ist oder nicht [3].

Syntax:

public static boolean isDigit(char ch)

Parameter:

  • ch: (erforderliches Feld) der zu testende Zeichenwert

Beispiel:

public class Main{

    // return true when the given parameter has a digit
    public boolean searchDigit(String str){
        for(int i = 0; i < str.length(); i++){
            // charAt() method returns the character at the specified index in a string
            if(Character.isDigit(str.charAt(i))){
                return true;
            }
        }
        return false;
    }

    // print digit index and value
    public void digitInfo(String str){
        for(int i = 0; i < str.length(); i++){
            if(Character.isDigit(str.charAt(i))){
                System.out.println("Digit: " + str.charAt(i) + " found at index " + i);
            }
        }
    }

    public static void main(String args[]){
        Main obj = new Main();
        String[] strList = {"RT7J", "1EOW", "WBJK"};

        for(String str : strList){
            if(obj.searchDigit(str)){
                obj.digitInfo(str);
            }else{
                System.out.println("No digit");
            }
        }

    }
}

Ausgabe:

Digit: 7 found at index 2
Digit: 1 found at index 0
No digit

4) .isLetter()

Definition: Die Methode .isLetter() bestimmt, ob ein Zeichen ein Buchstabe ist oder nicht [4].

Syntax:

public static boolean isLetter(char ch)

Parameter:

  • ch: (erforderliches Feld) der zu testende Zeichenwert

Beispiel:

public class Main{

    // check whether phoneNum has letter
    public void searchLetter(String phoneNum){
        boolean hasLetter = false;

        for(int i = 0; i < phoneNum.length(); i++){
            if(Character.isLetter(phoneNum.charAt(i))){
                hasLetter = true;
                // return letter value and index
                System.out.println(phoneNum + " has letter '" + phoneNum.charAt(i) + "' at index " + i);
            }
        }

        // phone number is valid when no letter
        if(!hasLetter){
            System.out.println(phoneNum + " is valid");
        }

        System.out.println();
    }

    public static void main(String args[]){
        Main obj = new Main();
        String[] phoneNum = {"A0178967547", "0126H54786K5", "0165643484"};

        for(String item: phoneNum){
            obj.searchLetter(item);
        }
    }
}

Ausgabe:

A0178967547 has letter 'A' at index 0

0126H54786K5 has letter 'H' at index 4
0126H54786K5 has letter 'K' at index 10

0165643484 is valid

5) Vergleichbar

Definition: Das Vergleichbare Die Schnittstelle wird verwendet, um eine natürliche Reihenfolge für eine Sammlung von Objekten zu definieren, und sie sollte in der Klasse der verglichenen Objekte implementiert werden [5]. Der Typparameter T stellt den Typ der Objekte dar, die verglichen werden können.

Beispiel:

// file: Employee.java
public class Employee implements Comparable<Employee>{
    private String email;
    private String name;
    private int age;

    public Employee(String email, String name, int age){
        this.email = email;
        this.name = name;
        this.age = age;
    }

    // The Comparable interface has a method called compareTo(T obj). 
    // This method helps decide how to order objects, so they can be sorted in a list
    @Override
    public int compareTo(Employee emp){
        // compare age: 
        // return this.age - emp.age;
        // (this.age - emp.age) = negative value means this.age before emp.age; 
        // (this.age - emp.age) = positive means this.age after emp.age

        // compare email:
        return this.email.compareTo(emp.email);
    }

    @Override
    public String toString(){
        return "[email=" + this.email + ", name=" + this.name + ", age=" + this.age +"]";
    }
}
// file: Main.java
import java.util.Arrays;

public class Main {
    public static void main(String args[]){
        Employee[] empInfo = new Employee[3];
        empInfo[0] = new Employee("joseph@gmail.com", "Joseph", 27);
        empInfo[1] = new Employee("alicia@gmail.com", "Alicia", 30);
        empInfo[2] = new Employee("john@gmail.com", "John", 24);

        Arrays.sort(empInfo);
        System.out.println("After sorting:\n" + Arrays.toString(empInfo));
    }
}

Ausgabe:

After sorting:
[[email=alicia@gmail.com, name=Alicia, age=30], [email=john@gmail.com, name=John, age=24], [email=joseph@gmail.com, name=Joseph, age=27]]

6) Benutzerdefinierte Java-Ausnahmen

Definition: Eine benutzerdefinierte Java-Ausnahme ist eine benutzerdefinierte Ausnahme, die ein Entwickler zur Behandlung spezifischer Fehlerbedingungen erstellt [6].

Beispiel:

public String[] split(String regex, int limit)
public class Main{

    public void getProductPrice(String products){
        double totalPrice = 0.0;
        StringBuilder priceDetails = new StringBuilder();

        String[] singleProduct = products.split("; ");

        for(int i = 0; i < singleProduct.length; i++){
            String[] productInfo = singleProduct[i].split(", ");
            totalPrice += Double.parseDouble(productInfo[2]);

            priceDetails.append(productInfo[2]);
            if(i < singleProduct.length - 1){
                priceDetails.append(" + ");
            }
        }

        System.out.println(priceDetails + " = " + totalPrice);
    }

    public static void main(String arg[]){
        Main obj = new Main();
        obj.getProductPrice("1, dragonfruit, 12.50; 2, guava, 23.45; 3, avocado, 395.67");
    }

}

Ausgabe:

12.50 + 23.45 + 395.67 = 431.62

7) Schnittstelle

Schnittstellen in Java ermöglichen es Benutzern, dieselbe Methode über verschiedene Klassen hinweg aufzurufen, wobei jede ihre eigene Logik implementiert [7]. Im folgenden Beispiel wird die Methode berechnePrice() in verschiedenen Klassen wie Fruit und DiscountFruit aufgerufen, wobei jede Klasse ihre eigene einzigartige Berechnungslogik anwendet.

Beispiel:

public String trim()
public class Main{
    public static void main(String args[]){
        String str = "   You can do it!   ";
        System.out.println(str);
        System.out.println(str.trim());
    }
}
   You can do it!   
You can do it!
public static boolean isDigit(char ch)

Ausgabe:

public class Main{

    // return true when the given parameter has a digit
    public boolean searchDigit(String str){
        for(int i = 0; i < str.length(); i++){
            // charAt() method returns the character at the specified index in a string
            if(Character.isDigit(str.charAt(i))){
                return true;
            }
        }
        return false;
    }

    // print digit index and value
    public void digitInfo(String str){
        for(int i = 0; i < str.length(); i++){
            if(Character.isDigit(str.charAt(i))){
                System.out.println("Digit: " + str.charAt(i) + " found at index " + i);
            }
        }
    }

    public static void main(String args[]){
        Main obj = new Main();
        String[] strList = {"RT7J", "1EOW", "WBJK"};

        for(String str : strList){
            if(obj.searchDigit(str)){
                obj.digitInfo(str);
            }else{
                System.out.println("No digit");
            }
        }

    }
}

Referenz

[1] JavaRush, Split-Methode in Java: String in Teile aufteilen, 8. August 2023

[2] W3Schools, Java String trim() Methode

[3] GeeksforGeeks, Character isDigit()-Methode in Java mit Beispielen, 17. Mai 2020

[4] Tutorialspoint, Java – Character isLetter()-Methode

[5] Beispiel für DigitalOcean, Comparable und Comparator in Java, 4. August 2022

[6] Shiksha, Understanding User Defined Exception in Java, 25. April 2024

[7] Scientech Easy, Verwendung der Schnittstelle in Java mit Beispiel, 9. Juli 2024

Das obige ist der detaillierte Inhalt vonJava-Lernreise. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Verschachtelte Try-BlöckeNächster Artikel:Keiner