import java.util.ArrayList;
import java.util.List;

public class LinterGaya {

    // Cuplikan dengan beberapa pelanggaran gaya; beku agar deterministik
    static final String CUPLIKAN = """
            public class layanan_pelanggan {
                private int hitungTotal(int Harga_satuan,int Jumlah) {
                    int hasil = Harga_satuan*Jumlah;
                    return hasil;
                }
            }
            """;

    public static void main(String[] args) {
        String[] baris = CUPLIKAN.split("\n", -1);
        List<String> temuan = new ArrayList<>();

        for (int n = 0; n < baris.length; n++) {
            String b = baris[n];

            // Aturan 1: nama class harus PascalCase
            if (b.matches(".*\\sclass\\s[a-z_].*")) {
                temuan.add("baris " + (n + 1) + ": nama class harus PascalCase");
            }

            // Aturan 2: parameter method diawali huruf kecil
            if (b.matches(".*\\(.*\\s[A-Z]\\w*.*\\).*")) {
                temuan.add("baris " + (n + 1) + ": parameter diawali huruf kapital");
            }

            // Aturan 3: koma diikuti satu spasi
            if (b.matches(".*,\\S.*")) {
                temuan.add("baris " + (n + 1) + ": koma tanpa spasi setelahnya");
            }

            // Aturan 4: operator * diberi spasi di kedua sisi
            if (b.matches(".*\\S\\*\\S.*")) {
                temuan.add("baris " + (n + 1) + ": operator * tanpa spasi");
            }
        }

        System.out.println("Jumlah temuan: " + temuan.size());
        for (String t : temuan) {
            System.out.println("- " + t);
        }
    }
}
