0Pricing
Java Academy · Ders

2B Veri Temizleme ve Doğrulama

2B tamsayı verilerini temizleyin ve doğrulayın: null satırları denetleyin, indeksleri sınırlarla karşılaştırın, aralık dışı değerleri sınırlandırın, düzensiz biçimleri normalleştirin ve doğrulama raporları oluşturun.

2B Veri Temizleme ve Doğrulama, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 6 dersinin 6. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 6 dersten oluşur.

2B Veriler Neden Temizlenir

Amaç: 2B tamsayı verilerini güvenli ve tutarlı hâle getirmek. Şunları yapacağız: (1) boş satırları denetlemek, (2) her satır için sınırları doğrulamak, (3) değerleri geçerli bir aralığa sınırlamak, (4) gerektiğinde düzensiz biçimleri normalleştirmek ve (5) bir doğrulama raporu oluşturmak.

Boş Değerler ve Sınırlar

1. adım: Boş satırları boş dizilerle değiştirin ve değerleri korumacı biçimde kopyalayın. Her satırın uzunluğunu denetlemek için bir inBounds yardımcısı sağlayın.

public class Main {
  // Make a defensive copy of m. Replace null rows with empty arrays.
  static int[][] copyOrEmpty(int[][] m) {
    if (m == null) return new int[0][0];
    int[][] out = new int[m.length][];
    for (int r = 0; r < m.length; r = r + 1) {
      if (m[r] == null) {
        out[r] = new int[0];
      } else {
        out[r] = new int[m[r].length];
        for (int c = 0; c < m[r].length; c = c + 1) out[r][c] = m[r][c];
      }
    }
    return out;
  }

  // Safe bounds check for jagged matrices
  static boolean inBounds(int[][] m, int r, int c) {
    return m != null && r >= 0 && r < m.length && m[r] != null && c >= 0 && c < m[r].length;
  }

  public static void main(String[] args) {
    int[][] raw = new int[][] { null, {1, 2, 3}, {4} };
    int[][] cleaned = copyOrEmpty(raw);

    System.out.println("rows = " + cleaned.length);
    for (int r = 0; r < cleaned.length; r = r + 1) System.out.println("row " + r + " len = " + cleaned[r].length);

    System.out.println("inBounds(1,2) = " + inBounds(cleaned, 1, 2));  // true
    System.out.println("inBounds(2,2) = " + inBounds(cleaned, 2, 2));  // false
  }
}

Değerleri Sınırlama

2. adım: Değerleri geçerli bir aralığa (örneğin 0–100) sınırlayın. Geçersiz negatifler 0, fazla büyük değerler 100 olur.

public class Main {
  static int clamp(int v, int lo, int hi) { if (v < lo) return lo; if (v > hi) return hi; return v; }
  static void clampAll(int[][] m, int lo, int hi) {
    if (m == null) return;
    for (int r = 0; r < m.length; r = r + 1) {
      if (m[r] == null) continue;
      for (int c = 0; c < m[r].length; c = c + 1) m[r][c] = clamp(m[r][c], lo, hi);
    }
  }
  static void print(int[][] m) {
    for (int r = 0; r < m.length; r = r + 1) {
      if (m[r] == null) { System.out.println("<null row>"); continue; }
      for (int c = 0; c < m[r].length; c = c + 1) System.out.print(m[r][c] + (c + 1 < m[r].length ? " " : ""));
      System.out.println();
    }
  }
  public static void main(String[] args) {
    int[][] m = { { -5, 101, 50 }, null, { 200 } };
    System.out.println("before clamp:");
    print(m);
    clampAll(m, 0, 100);
    System.out.println("after clamp [0..100]:");
    print(m);
  }
}

Biçimi Normalleştirme

3. adım: Her kısa (veya boş) satırı, bir doldurma değeri (örneğin 0) kullanarak en uzun satırın uzunluğuna kadar doldurup dikdörtgen bir biçime normalleştirin.

public class Main {
  static int[][] padToMaxCols(int[][] m, int pad) {
    if (m == null) return new int[0][0];
    int rows = m.length;
    int maxCols = 0;
    for (int r = 0; r < rows; r = r + 1) if (m[r] != null && m[r].length > maxCols) maxCols = m[r].length;
    int[][] out = new int[rows][maxCols];
    for (int r = 0; r < rows; r = r + 1) {
      int cols = (m[r] == null) ? 0 : m[r].length;
      for (int c = 0; c < cols; c = c + 1) out[r][c] = m[r][c];
      for (int c = cols; c < maxCols; c = c + 1) out[r][c] = pad;  // pad missing cells
    }
    return out;
  }
  static void print(int[][] x) {
    for (int r = 0; r < x.length; r = r + 1) {
      for (int c = 0; c < x[r].length; c = c + 1) System.out.print(x[r][c] + (c + 1 < x[r].length ? " " : ""));
      System.out.println();
    }
  }
  public static void main(String[] args) {
    int[][] jag = { {1, 23, 456}, {7, 8}, null, {90} };
    int[][] rect = padToMaxCols(jag, 0);
    print(rect);
  }
}

Doğrulama Raporu

4. adım: Negatif değerlerin, fazla büyük değerlerin, boş satırların ve ziyaret edilen toplam hücre sayısının sayıldığı bir doğrulama raporu oluşturun.

public class Main {
  static class Report { int negatives; int overMax; int nullRows; int cells; }
  static Report validate(int[][] m, int hi) {
    Report r = new Report();
    if (m == null) return r;
    for (int i = 0; i < m.length; i = i + 1) {
      if (m[i] == null) { r.nullRows = r.nullRows + 1; continue; }
      for (int j = 0; j < m[i].length; j = j + 1) {
        int v = m[i][j];
        r.cells = r.cells + 1;
        if (v < 0) r.negatives = r.negatives + 1;
        if (v > hi) r.overMax = r.overMax + 1;
      }
    }
    return r;
  }
  public static void main(String[] args) {
    int[][] m = { { -5, 101, 50 }, null, { 200 } };
    Report r = validate(m, 100);
    System.out.println("cells=" + r.cells + ", negatives=" + r.negatives + ", overMax=" + r.overMax + ", nullRows=" + r.nullRows);
  }
}

Boşları Atlayarak Yazdırma

5. adım: Boş satırları sorunsuz biçimde atlayan ve her satırın uzunluğuna uyan hizalı bir yazdırma özelliği sağlayın.

public class Main {
  static boolean inBounds(int[][] m, int r, int c) {
    return m != null && r >= 0 && r < m.length && m[r] != null && c >= 0 && c < m[r].length;
  }
  static int[] widths(int[][] m) {
    int maxCols = 0; if (m == null) return new int[0];
    for (int r = 0; r < m.length; r = r + 1) if (m[r] != null && m[r].length > maxCols) maxCols = m[r].length;
    int[] w = new int[maxCols];
    for (int r = 0; r < m.length; r = r + 1) {
      if (m[r] == null) continue;
      for (int c = 0; c < m[r].length; c = c + 1) {
        int len = Integer.toString(m[r][c]).length();
        if (len > w[c]) w[c] = len;
      }
    }
    for (int c = 0; c < w.length; c = c + 1) if (w[c] < 1) w[c] = 1;
    return w;
  }
  static void printAlignedSkipNull(int[][] m) {
    int[] w = widths(m);
    for (int r = 0; r < m.length; r = r + 1) {
      if (m[r] == null) { System.out.println("<skipped null row>"); continue; }
      String line = "";
      for (int c = 0; c < m[r].length; c = c + 1) {
        String s = Integer.toString(m[r][c]);
        while (s.length() < w[c]) s = " " + s;
        line = line + s + (c + 1 < m[r].length ? " " : "");
      }
      System.out.println(line);
    }
  }
  public static void main(String[] args) {
    int[][] m = { { 1, 200, -3 }, null, { 45 } };
    printAlignedSkipNull(m);
  }
}

Güvenli Erişim Kontrolü

Hızlı kontrol: Olası düzensiz verilerde m[r][c] ifadesine nasıl güvenli biçimde erişirsiniz?

Özet ve Sıradaki Konu

Özet: Verileri korumacı biçimde kopyaladınız, dizinleri denetlediniz, değerleri sınırladınız, düzensiz biçimleri normalleştirdiniz ve doğrulama özetleri oluşturdunuz. Bu yapı taşları sonraki 2B algoritmalarını sağlamlaştırır.

Sıkça Sorulan Sorular

“2B Veri Temizleme ve Doğrulama” dersi ücretsiz mi?

Evet — “2B Veri Temizleme ve Doğrulama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 6 dersten oluşur.

“2B Veri Temizleme ve Doğrulama” dersinde ne öğreneceğim?

2B tamsayı verilerini temizleyin ve doğrulayın: null satırları denetleyin, indeksleri sınırlarla karşılaştırın, aralık dışı değerleri sınırlandırın, düzensiz biçimleri normalleştirin ve doğrulama rap… Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Java Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 6 dersinin 6. dersidir.

“2B Veri Temizleme ve Doğrulama” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. 2B Dizilerin Temelleri ve İç İçe Dolaşma
  2. Düzensiz Diziler ve Tablo Biçimlendirme
  3. Satır/Sütun Maksimumları, Transpoz ve Biçimlendirme
  4. 2B Mini Proje: Not Defteri
  5. Yardımcı Sınıf Olarak 2B Araçlar (Yeniden Düzenleme)
  6. 2B Veri Temizleme ve Doğrulama
← Java Academy Sayfasına Dön