Input dan Output ke text file part 1

Agar bebas dengan masalah lokasi file (file path), dibuat dua program. Yang kesatu adalah untuk menulis ke file dan yang kedua untuk menampilkan data dari file ke layar.

Program 1: Menulis string ke file

import java.io.*;
class TulisKeFile 
{	
public static void main(String args[])
{              
   FileOutputStream out; // declare a file output object
   PrintStream p; // declare a print stream object
   try
   {
     // Create a new file output stream
     // connected to "myfile.txt"
     out = new FileOutputStream("myfile.txt");

     // Connect print stream to the output stream
     p = new PrintStream( out );	
     p.println ("ini string yang ditulis ke file");
     p.close();
   }
   catch (Exception e)
   {
           System.err.println ("Error writing to file");
   }
   System.out.println("Tulis ke file OK");
}
}

kalau berhasil nulisnya, di layar akan tampil Tulis ke file OK
ada di mana file myfile.txt ? --> ada di folder yang sama dengan program
kalau dengan BlueJ ada di folder projectnya (bingung kan?)

Yang kedua, program untuk baca hasil program di atas

import java.io.*;

class BacaStringDariFile 
{
public static void main(String args[])
{ 
	try
	{
   FileInputStream fstream = new FileInputStream("myfile.txt");
   DataInputStream dataInput = new DataInputStream(fstream);
         
   while (dataInput.available() !=0)
	 {
		String data=dataInput.readLine();
	  System.out.println (data);
	 }
	 dataInput.close();
   }
   catch (Exception e)
   {
	 System.err.println("File input error");
}
}
}

Penjelasan untuk "hal-hal membingungkan" .....

  • import import java.io.*; maksudnya?
  • ..... dll ntar nyusul
  • ..... tanya azza soalnya kalau njelasin rada malez tapi kalau jawab pertanyaan semangat berkobar

Nambah sedikit lagi ..... kalau inputnya dibuat dengan NotePad, misalnya data harga buncis seminggu, lalu kita hitung rata-ratanya

Ketik data berikut dengan Notepad (ada 7 baris) save di c:\hargabuncis.txt


25
25
30
30
32
31
24

dan ini program untuk menampilkan harga buncis dan menghitung rata-rata harga buncisnya

import java.io.*;

class HargaBuncis 
{
public static void main(String args[])
{ 
   String x;
   int harga=0,jumlah=0,n=0; // cobain kalau int harga,jumlah,n;
   try
   {
   FileInputStream fstream = new FileInputStream("c:/hargabuncis.txt");
   DataInputStream dataInput = new DataInputStream(fstream);
         
   while (dataInput.available() !=0)
	 {
	  x=dataInput.readLine();
	  harga=Integer.parseInt(x);
	  n=n+1;
	  jumlah=jumlah+harga;
	  System.out.println ("Harga Buncis hari ke "+n+"  "+harga);
	 }
	 dataInput.close();
   }
   catch (Exception e)
   {
	 System.err.println("File input error");
   }
   double rata2=(double) jumlah/n;
   // cobain kalau pake double rata2=jumlah/n;  hasilnya spt apa?
   System.out.println ("Harga Buncis rata-rata "+rata2);
}
}

ini hasilnya

Harga Buncis hari ke 1  25
Harga Buncis hari ke 2  25
Harga Buncis hari ke 3  30
Harga Buncis hari ke 4  30
Harga Buncis hari ke 5  32
Harga Buncis hari ke 6  31
Harga Buncis hari ke 7  24
Harga Buncis rata-rata 28.142857142857142

koq desimalnya panjang amat? gimana supaya cuma 2 desimal? .... tunggu tgl mainnya!

sedikit penjelasan soal double rata2=(double) jumlah/n;

  • double rata2 deklarasi variabel rata2 dengan type double (krn rata-rata bisa bukan bilangan bulat)
  • (double) jumlah namanya type casting artinya konversikan jumlah menjadi type double
  • napa? >>>> soalnya kalau jumlah/n itu integer dibagi integer hasilnya integer juga; kalau jumlah misalnya 100 dan n 8 maka hasil ekspresi jumlah/n adalah 12 .. bukan 12.5 ........ understand?