MulaiMulai sekarang secara gratis

Menemukan berkas lokal

Anda ingin menulis program kecil yang akan mencetak hanya berkas lokal dalam sebuah direktori tertentu. Anda sudah berhasil mengambil daftar elemen dalam direktori, disimpan di DIRECTORY_CONTENT, tetapi:

  • Semua elemen diawali dengan tipe, lalu nama elemennya
  • /d berarti direktori,
  • /f berarti berkas
  • Beberapa berkas tersembunyi, dan berisi "."
  • Berkas di direktori lain tidak boleh dicetak Mari kita perbaiki sekarang!

Latihan ini adalah bagian dari kursus

Java Menengah

Lihat Kursus

Petunjuk latihan

  • Gunakan .substring(a,b) dan .contains("") untuk memeriksa apakah elemen tersebut berkas atau direktori.
  • Periksa apakah suatu berkas tersembunyi ketika berkas tersebut contains sebuah ".".
  • Periksa bahwa berkas lokal dengan memastikan tidak mengandung "/".
  • Gunakan operator logika yang benar untuk menerapkan kedua kondisi sekaligus.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

class ls {
  static boolean isFile(String elem) {
    // Check that the first 3 characters of the element contain /f as a substring
    return elem.____(0, 3).____("/f");
  }
  
  static boolean isHidden(String elem) {
    // Use the appropriate method to make sure that file is hidden
    return elem.____(".");
  }

  static boolean isNonLocal(String elem) {
    // Use the correct method to determine whether a file is in a directory
    return elem.____(____, elem.length()).____(____);
  }

  public static void main(String[] args) {
    int hiddenCounter = 0, directoryCounter = 0, nestedCounter = 0;
    for (String elem : DIRECTORY_CONTENT) {
      if (isFile(elem)) {
        if (!isHidden(elem)) System.out.print(elem.substring(2));
          // Use a logical operator to make it correct
        else if (isHidden(elem) ____ !isNonLocal(elem)) hiddenCounter++;
        else nestedCounter++;
      } else directoryCounter++;
    }
    printer(hiddenCounter, directoryCounter, nestedCounter);
  }

  static String[] DIRECTORY_CONTENT = {"/d .Trash", "/f .history", "/d Applications", "/f tmp", "/f script", "/d Documents", "/f Documents/.bankAccounts", "/f .sshKeys", "/d Pictures", "/f content", "/f Documents/file"};

  static void printer(int hiddenCounter, int directoryCounter, int nestedCounter) {
    System.out.println();
    System.out.println("With :\n" + hiddenCounter + " hidden files,\n" + directoryCounter + " directories,\nAnd " + nestedCounter + " nested files");
  }
}
Edit dan Jalankan Kode