[Java] Baca Teks dan Simpan ke dalam Array Dua Dimensi

Pagi-pagi sambil nge-air putih (minum air putih maksudnya) sambil menikmati dinginnya Surabaya yang tumben-tumbenan. Alhamdulillah :D. Postingan ini muncul karena terinspirasi dari seorang kawan baik nun jauh disana, yang juga sedang menimba ilmu di kampus seberang. Sebuah pertanyaan darinya hingga lahirlah postingan ini :D.  Baiklah kita sapa dulu Betha Nurina Sari :D. Salam #semangat pagi dari Surabaya :D.

Oke langsung aja, jadi diperkirakan ada sebuah kasus semacam demikian :

Screen Shot 2013-12-31 at 8.15.20 am

Gambar diaatas adalah sebuah file plain text, yang berisi informasi seperti diatas, yang tersimpan dalam file kamar.txt. Nah, sekarang bagaimana caranya agar informasi-informasi diatas dapat disimpan ke dalam sebuah tipe data array 2 dimensi ???. Oke kita rancang dulu kebutuhan yang digunakan untuk menyelesaikan permasalahan di atas. Kebutuhan yag dirinci dapat dibuat sebuah fungsi atau method untuk memudahkan kita dalam mengutak-atik code. Kata suhu-suhu istilah kerennya OOP (Object Oriented Programming).

  1. Fungsi baca file teks, return value Arraylist<String>. Disini nama fungsi-nya saya namakan readTeks, dengan input parameter berupa nama file teks.
  2. Fungsi untuk menyimpan  kata/item dari masing-masing baris, dengan menggunakan pemisah/delimiter spasi. Nama fungsi dinamakan token, dengan input parameter berupa String kalimat (anggap aja per baris itu sebuah kalimat 😀 *alibi bingung ngasih nama variabel) 😀 ).
  3. Fungsi untuk menyimpan semua informasi dalam bentuk array 2 dimensi. Disini saya namakan saveToArray.

Kurang lebih itu fungsi-funsgi yang dibutuhkan, sekarang mari saatnya kita menjahit. Nah dibawah ini kurang lebih jahitan saya.

[code language=”java”]
package TeksProcessing;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.StringTokenizer;

/**
*
* @author yuitaarumsari
*/
public class ReadTextSaveToArray {
public static ArrayList<String> readTeks(String bacateks) throws FileNotFoundException, IOException {
File bacafile = new File(bacateks);
FileReader inputDokumen = new FileReader(bacafile);
BufferedReader bufferBaca = new BufferedReader(inputDokumen);
StringBuffer content = new StringBuffer();
String barisData;
ArrayList<String> data = new ArrayList<String>();
while ((barisData = bufferBaca.readLine()) != null) {
content.append(barisData);
content.append(System.getProperty(“line.separator”));
data.add(barisData);
}
return data;
}

public static ArrayList<String> token(String kalimat) throws FileNotFoundException, IOException {
ArrayList<String> listKata = new ArrayList<String>();
StringTokenizer token = new StringTokenizer(kalimat, ” “);//pemisahan kata dengan delimiter spasi
while (token.hasMoreTokens()) {
listKata.add(token.nextToken());
}
return listKata;
}

public static String[][] saveToArray(ArrayList<String> input) throws FileNotFoundException, IOException{
String[][] data=new String[input.size()][4];
for (int i = 0; i < input.size(); i++) {
ArrayList<String> item=token(input.get(i));
for (int j = 0; j < item.size(); j++) {
data[i][j]=item.get(j);//memasukkan data ke dalam array
}
}
return data;
}

public static void main(String[] args) throws FileNotFoundException, IOException {
ArrayList<String> listData=readTeks(“kamar.txt”);
String[][] array=saveToArray(listData);
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j]+”\t”);
}
System.out.println(“”);
}
}

}
[/code]

Hasil program ketika dijalankan akan muncul seperti ini :

Screen Shot 2013-12-31 at 8.31.24 am

Okey, kurang lebih demikian pendapat dan cuap-cuap saya pada pagi ini. Sangat mungkin sekali masih ada banyak cara, selain cara yang saya gunakan, baik melihat dari sisi keefisienan, kompleksitas, dan efektifitas. So, discussions are welcomed :).

Well, terima kasih, semangat pagi, dan salam Java! 😀

0 thoughts on “[Java] Baca Teks dan Simpan ke dalam Array Dua Dimensi

    • @mas data : maturnuwun sharing-nya 😀
      Program dari mas data lebih hemat baris rupanya.
      Gak kepikiran soal parsing dari CSV ke Java 😀 .
      Sip.. sip.. #mantab

    • @ika
      letakkan file text nya jadi satu folder sama projectnya.
      Kalau mau disimpan dimana aja juga bisa, tinggal menggunakan relative path atau absolute path.. 🙂

Leave a Reply

Your email address will not be published.