1. Pengertian Stream
Program Java melakukan proses input/output melalui stream. Apa itu
stream?...Stream adalah sebuah abstraksi yang dapat memberikan atau mendapatkan
informasi. Terdapat dua macam tipe stream, yaitu stream byte dan stream karakter.
Stream byte digunakan untuk memberikan atau menyimpan informasi data dalam
bentuk byte. Misalnya untuk menulis dan membaca file biner. Sedangkan stream karakter
digunakan untuk melakukan proses I/O yang melibatkan data-data dalam bentuk karakter.
Misalnya pada saat melakukan proses baca atau tulis ke file teks.
Stream didefinisikan dengan menggunakan empat kelas abstrak, yaitu:
InputStream, OutputStream, Reader, dan Writer. Kelas InputStream, OutputStream
merupakan kelas abstrak yang dirancang sebagai kelas induk (superclass) untuk kelaskelas
yang termasuk kategori stream byte. Sedangkan kelas Reader dan Writer
merupakan kelas abstrak yang akan diturunkan menjadi kelas-kelas baru yang termasuk
dalam stream karakter.
Melalui pewarisan (inheritance) semua kelas yang diturunkan dari InputStream
dan Reader akan memiliki method read( )yang berguna untuk proses pembacaan data.
Sedangkan OuputStream maupun Writer akan digunakan untuk proses penulisan data.
1.1 Stream Byte
Stream byte didefinisikan dengan menggunakan dua buah hirarki kelas, yaitu
InputStream dan OutputStream. Daftar beberapa kelas dalam paket java.io
yang termasuk dalam kategori stream byte diantaranya adalah
Nama Kelas
Keterangan
BufferedInputStream
Stream input yang telah ter-buffer
BufferedOutputStream
Stream output yang telah ter-buffer
ByteArrayInputStream
Stream input yang membaca dari array byte
ByteArrayOutputStream
Stream output yang menulis ke array byte
DataInputStream
Stream input yang berisi methodmethod
untuk membaca tipe data standar yang terdapat dalam java
DataOutputStream
Stream output yang berisi method-method
untuk menulis tipe data
standar yang terdapat dalam java
1.2 Stream Karakter
Stream karakter juga berbasis pada dua buah kelas yaitu Reader dan Writer.
Berikut beberapa kelas dalam paket java.io yang termasuk dalam kategori
stream karakter.
BufferedReader
Stream karakter input yang telah terbuffer
BufferedWriter
Stream karakter output yang telah
ter-buffer
CharArrayReader
Stream input yang membaca dari
array karakter
CharArrayWriter
Stream output yang menulis ke array
karakter
InputStreamReader
Stream input menerjemahkan byte ke
karakter
OutputStreamWriter
Stream output yang menerjemahkan
karakter ke byte
2. Melakukan Input data Karakter, String, dan Numerik
2.1.Melakukan Input data
Untuk menangani proses input, input console dilakukan melalui pembacaan
terhadap Stream System.in. Untuk mendapatkan karakter-karakter yang dimasukkan
melalui keyboard ke dalam layar console maka perlu membungkus System.in di
dalam objek BufferedReader
Sehingga untuk membuat objek BufferedReader dapat terhubung dengan
keyboard maka diperlukan kode berikut:
BufferedReader br = new BufferedReader (new
InputStreamReader(System.in)
2.2. Input data berupa karakter
Gunakan method read ( ) yang terdapat dalam kelas BufferedReader. Method
read dideklarasikan sebagai berikut:
int read () throws IOException
Contoh program
//Program 4-1
import java.io.*;
clas demoinputkarakter{
public static void main (string[] args) throws IOException{
Syste.out.print("Masukan sembarang karakter = ");
char ch;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
ch = (char) br.read();
System.out.println("karakter yang dimasukan adalah ="+ch);
}
}
2.3. Input data berupa String
Untuk membaca input berupa string digunakan method readLine ( ) .
Method readLine dideklarasikan sebagai berikut :
String readLine () throws IOException
contoh program :
//program 4-2
import java.io.*;
clas inputdata{
public static void main (String[] args) thorw IOException{
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader input = new BufferedReader(reader);
System.out.print("masukan sembarang kata = ");
String teks = input.readLine();
//System.out.println("kata yang dimasukan adalah ="+teks);
System.out.println(teks);
}
}
Java mempunyai kelas JoptionPane yang mempunyai metode statis untuk membuat
dialog standar.
showInputDialog (Object Message)
Contoh Program
//program 4-3
import javax.swing.*;
clas inputdatabox{
public static void main (String[] args)
{
String teks = JOptionPane.showInputDialog("Masukan data :");
String.out.print(teks);
system.exit(0);
}
}
resume tentang program tersebut:
//program 4-4
import java.io.BufferedReader;
import java.io.InputEtreamReader;
import java.io.IOException;
public class InputdariKeyboard{
public static void main( String[] args){
BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in));
String name = "";
System.out.print("Masukan nama :");
try{
name = dataIn.readLine();
}catch( IOException e){
System.out.println("Error!");
}
System.out.println("Hello "+name+"!");
}
}
2.4. Input data berupa Numerik
Untuk membaca input (melakukan input data) berupa numerik adalah sama pada
saat melakukan input data berupa string, kemudian string hasil input tersebut
dikonversikan ke tipe numerik. Format penulisan metode untuk membacanya
adalah:
bilangan = Integer.parseInt(temp);
bilangan merupakan variabel untuk menyimpan hasil konversi String ke
bil.bulat.
a. Input data bilangan bulat (integer).
//program 4-5
import java.io.*;
class demoinputnumerik1{
public static void main(String[] args) throws IOException{
System.out.print("masukan sebuah bilangan bulat :");
String temp;
int bilangan = 0;
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
//input data dianggap sebagai string
temp = br.readLine();
try{
//konversi dari string ke integer
bilangan = Integer.parseInt(temp);
} catch (NumberFormatException nfe){
system.out.println("data yang dimasukan " +"
bukan bilangan bulat")
System.exit(1);
}
System.out.println("bilangan yang dimasukan "+
"adalah" +bilangan);
}
}
Mula-mula input data dianggap sebagai String, selanjutnya setelah input ditangkap
maka nilainya dikonversi ke bil.bulat, dengan menggunakan method parseInt( ).
Parameter yang dilewatkan ke dalam method parseInt( ) harus bertipe String.
Proses konversi di atas berada dalam blok try-catch. Hal ini dilakukan untuk
mendeteksi kesalahan misalnya user dalam memasukkan data string yang tidak dapat
dikonversi ke bilangan bulat. Apabila ada kesalahan, maka eksepsi
NumberFormatException akan dibangkitkan.
b. Input data bilangan riil (floating point)
Untuk input bilangan riil, digunakan method parseDouble ( ) yang berada di kelas
Double. Parameter yang dilewatkan juga harus bertipe string. Berikut contohnya:
//program 4-6
import java.io.*;
class demoinputnumerik2{
public static void main(String[] args) throws IOException {
System.out.print("masukan sebuah bilangan riil : ");
String temp;
Double bilangan = 0;
InputStreamReader isr = new InputStreamreader(System.in);
BufferedReader br = new BufferedReader(isr);
//input data dianggap sebagai string
temp = br.readLine();
try{
//konversi dari string ke floating-point
bilangan = Double.parseDouble(temp);
} catch (NumberformatException nfe){
System.out.println("data yang dimasukan bukan bilangan");
System.exit(1);
}
System.out.println("Bilangan yang dimasukan " +
"adalah " +bilangan);
}
}