Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.io.*;
- public class HitungIP {
- public static String path;
- public static int bacaBaris() throws IOException{
- FileReader bacaFile = new FileReader(path);
- BufferedReader bacaBuffer = new BufferedReader(bacaFile);
- String baris;
- int jumlahBaris = 0;
- //looping baca baris
- while ((baris = bacaBuffer.readLine()) != null){
- jumlahBaris++;
- }
- bacaBuffer.close();
- return jumlahBaris;
- }
- public static String[] OpenFile() throws IOException{
- FileReader fr = new FileReader(path);
- BufferedReader textReader = new BufferedReader(fr);
- int jumlahBaris = bacaBaris();
- String[] textData = new String[jumlahBaris];
- int i;
- for (i=0;i<jumlahBaris;i++){
- textData[i] = textReader.readLine();
- }
- textReader.close();
- return textData;
- }
- // Method untuk menghitung nilai IP
- public static double hitungIP(double NilaiTotal, double SKS){
- double nilaiIP = 0;
- try {
- nilaiIP = NilaiTotal/SKS;
- }
- catch (Exception e) {
- }
- return nilaiIP;
- }
- public static void CetakFile(List<String> content, String Tipe){
- File file = null;
- if (Tipe == "lulus") {
- file = new File("D:/ddp/lulus.txt");
- }
- else if (Tipe == "tidakLulus"){
- file = new File("D:/ddp/tidakLulus.txt");
- }
- else if (Tipe == "error"){
- file = new File("D:/ddp/error.txt");
- }
- System.out.println("");
- System.out.println("Membuat file " + Tipe + ".txt");
- System.out.println("...");
- try{
- // kalau belum ada filenya, buat lah
- if (!file.exists()) {
- file.createNewFile();
- }
- FileWriter fw = new FileWriter(file.getAbsoluteFile());
- BufferedWriter bw = new BufferedWriter(fw);
- for(int i=0;i<content.size();i++){
- bw.write(content.get(i));
- bw.newLine();
- }
- bw.close();
- System.out.println("Berhasil!");
- }
- catch(IOException e){
- e.printStackTrace();
- }
- }
- public static boolean isNumeric(String str){
- try{
- double d = Double.parseDouble(str);
- }
- catch(NumberFormatException nfe){
- return false;
- }
- return true;
- }
- public static boolean CekError(String Tipe, String zNilaiTotal, String zSKS, double zIP){
- //- Nilai total atau jumlah SKS bukan merupakan bilangan
- //- Jumlah SKS melebihi 25 atau bukan bilangan bulat
- //- Nilai IP melebihi 4 (Dipastikan input tidak negatif)
- boolean isError = true;
- if (Tipe == "NilaiTotalSKS"){
- if (isNumeric(zNilaiTotal) == true) { //Nilai Total merupakan bilangan
- if (isNumeric(zSKS) == true) { //SKS merupakan bilangan
- //if (zSKS.matches("[0-9]*")){ //SKS merupakan bilangan bulat
- if (Double.parseDouble(zNilaiTotal) >= 0){ //Nilai Total tidak boleh minus
- if (Double.parseDouble(zSKS) <= 25 && Double.parseDouble(zSKS) >= 0){ //SKS antara 0 s/d 25
- isError = false;
- //DEBUG System.out.println("bilangan");
- }
- }
- //}
- }
- }
- }
- else if (Tipe == "IP"){
- if (zIP <= 4 && zIP > 0){
- isError = false;
- }
- }
- return isError;
- }
- public static void main(String[] args){
- String file_path = "D:/ddp/";
- String file_name;
- String inputFileName = ".txt";
- String[] tahunAjaran;
- int ajaranAwal = 0;
- int ajaranAkhir = 0;
- boolean isTahunAjaranValid = false;
- String[] dataMahasiswa;
- double IP = 0;
- //String[] contentLulus = new String[];
- List<String> contentLulus = new ArrayList<String>();
- List<String> contentTidakLulus = new ArrayList<String>();
- List<String> contentError = new ArrayList<String>();
- boolean isError = false;
- try{
- // Minta nama file input.
- Scanner scan = new Scanner(System.in);
- System.out.print("Input file: ");
- inputFileName = scan.next();
- inputFileName = inputFileName + ".txt";
- file_name = file_path + inputFileName;
- // Buka file input.
- path = file_name;
- String[] aryLines = OpenFile();
- for(int i=0;i<aryLines.length;i++){
- //DEBUG System.out.println(aryLines[i]);
- }
- // Baca baris pertama yang berisi tahun ajaran.
- /* DEBUG
- System.out.println("");
- System.out.println("Tahun Ajaran: " + aryLines[0]);
- */
- tahunAjaran = aryLines[0].split("/");
- // Lakukan validasi tahun ajaran
- ajaranAwal = Integer.parseInt(tahunAjaran[0]);
- ajaranAkhir = Integer.parseInt(tahunAjaran[1]);
- if ((ajaranAkhir-ajaranAwal) == 1){
- //DEBUG System.out.println("Tahun Ajaran valid...");
- isTahunAjaranValid = true;
- }
- else {
- System.out.println("Tahun Ajaran tidak valid...");
- }
- // throw exception anda sendiri kalau terjadi error
- // while loop untuk memproses data dari file
- if (isTahunAjaranValid == true){
- //DEBUG System.out.println("");
- int iDetail=1;
- int iLulus = 1;
- int iGagal = 1;
- int iError = 1;
- contentLulus.clear();
- contentTidakLulus.clear();
- contentError.clear();
- while (iDetail<aryLines.length){
- //DEBUG System.out.println("");
- dataMahasiswa = aryLines[iDetail].split(" ");
- for (int i=0;i< dataMahasiswa.length;i++){
- //DEBUG System.out.println(dataMahasiswa[i]);
- }
- isError = CekError("NilaiTotalSKS", dataMahasiswa[1], dataMahasiswa[2], 0);
- if(isError == false){
- IP = hitungIP(Double.parseDouble(dataMahasiswa[1]),Integer.parseInt(dataMahasiswa[2]));
- isError = CekError("IP", "", "", IP);
- if(isError == false){
- if (IP >= 1.75){
- //DEBUG System.out.println("lulus");
- contentLulus.add(aryLines[iDetail]);
- iLulus++;
- }
- else if(IP < 1.75){
- //DEBUG System.out.println("tidak lulus");
- contentTidakLulus.add(aryLines[iDetail]);
- iGagal++;
- }
- }
- else if (isError == true){
- System.out.println("error IP");
- contentError.add(aryLines[iDetail]);
- iError++;
- }
- }
- else if (isError == true){
- System.out.println("Telah terjadi error!");
- contentError.add(aryLines[iDetail]);
- iError++;
- }
- iDetail++;
- }
- if (iLulus>1){
- CetakFile(contentLulus, "lulus");
- }
- if (iGagal>1){
- CetakFile(contentTidakLulus, "tidakLulus");
- }
- if (iError>1){
- CetakFile(contentError, "error");
- }
- }
- }
- catch (IOException e) {
- System.out.println("");
- System.out.println(e.getMessage());
- System.out.println("File Not Found");
- System.out.println("Pastikan file " + inputFileName + " ada di directory D:\ddp");
- }
- catch (ArrayIndexOutOfBoundsException AIOoBE) {
- System.out.println("tidak ada sks");
- }
- catch (NumberFormatException NFE ) {
- System.out.println("sks pake koma");
- }
- //catch (. . . ) {
- //}
- //}
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement