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?