Verifikasi tipe data

Pembersihan Data di Java

Dennis Lee

Software Engineer

Mengapa cek tipe data?

  • Perlu mem-parsing teks dari sumber data eksternal
  • Tipe data tidak valid menyebabkan error runtime
  • Validasi yang tepat mencegah crash

 

String priceText = "$30.61";
double price = Double.parseDouble(priceText);  // Gagal: $ tidak valid dalam angka
Exception in thread "main" java.lang.NumberFormatException
Pembersihan Data di Java

Memvalidasi teks numerik

// Utilitas untuk validasi angka
import org.apache.commons.lang3.math.NumberUtils; 
String reviewCountText = "165";
System.out.println(NumberUtils.isParsable(reviewCountText));
true
String priceText = "$30.61"; // Angka tidak valid
System.out.println(NumberUtils.isParsable(priceText)); // false: ada simbol $
false
Pembersihan Data di Java

Mem-parsing teks numerik

private static String validateNumeric(String value) {
    if (NumberUtils.isParsable(value)) return value;  // Kembalikan jika angka valid
    throw new IllegalArgumentException("Invalid: " + value);  // Jika tidak, lempar error
}

int reviews = Integer.parseInt(validateNumeric("165"));  // Validasi lalu parse

// Hapus $ terlebih dahulu double price = Double.parseDouble(validateNumeric("$30.61".replace("$", ""))); System.out.println("reviews: " + reviews + "\nprice in $: " + price);
reviews: 165
price in $: 30.61
Pembersihan Data di Java

Memvalidasi format tanggal

import java.time.format.DateTimeFormatter; // Untuk pemformatan pola tanggal
private static LocalDate parseDate(String dateStr) {
    DateTimeFormatter format = DateTimeFormatter.ofPattern("M/d/yy");

return LocalDate.parse(dateStr, format); // Ubah string ke LocalDate }
LocalDate date = parseDate("1/10/23"); // "1/10/23" menjadi 2023-01-10 System.out.println("Date: " + date);
Date: 2023-01-10
Pembersihan Data di Java

Menggabungkan validasi numerik dan tanggal

private static double parsePrice(String price) {
    return Double.parseDouble(validateNumeric(price.replace("$", "")); // Hapus $
}


// Konversi field CSV ke BookSales public static BookSales parseSalesData(String[] fields) { String title = fields[0]; LocalDate publishDate = parseDate(fields[1]); // Parsing tanggal kustom int reviews = Integer.parseInt(validateNumeric(fields[2])); double rating = Double.parseDouble(validateNumeric(fields[3])); double price = parsePrice(fields[4]); // Tangani format mata uang return new BookSales(title, publishDate, reviews, rating, price); }
Pembersihan Data di Java

Membaca file CSV dengan aman

List<BookSales> sales = new ArrayList<>(); // Simpan objek BookSales


try (BufferedReader reader = new BufferedReader(new FileReader("book_sales.csv"))) {
String line = reader.readLine(); // Lewati baris header
while ((line = reader.readLine()) != null) { // Baca hingga akhir file String[] fields = line.split(","); // Pisahkan baris CSV ke array sales.add(parseSalesData(fields)); // Ubah fields ke objek BookSales } }
sales.forEach(System.out::println); // Cetak tiap penjualan
BookSales[title=Python Crash Course, publishDate=2023-01-10, 
reviewCount=165, rating=4.8, price=30.61]
Pembersihan Data di Java

Ringkasan: verifikasi tipe data

  • Validasi teks sebelum parsing untuk mencegah error runtime
  • Impor kunci
    • org.apache.commons.lang3.math.NumberUtils
    • java.time.format.DateTimeFormatter
  • Gunakan NumberUtils.isParsable() untuk mengecek string numerik
  • Tangani banyak format tanggal dengan DateTimeFormatter
  • Menangkap isu tipe data menjaga integritas data
Pembersihan Data di Java

Ayo berlatih!

Pembersihan Data di Java

Preparing Video For Download...