Selamat Belajar !

Sabtu, 29 September 2012

Mengurutkan Nama menggunakan Insertion Sort

Soal :
- Menampilkan nama sesuai urutan alphabet
- Menampilkan absen 2 teratas, dan
- Menampilkan absen 2 terbawah

Jawaban :

file UrutanNama.java


public class UrutanNama {
    public static void main(String[] args) throws Exception
           
    {
        BufferedReader kata = new BufferedReader(new InputStreamReader(System.in)); // menginput nama dari keyboard menggunakan BufferedReader
        int a; // // mendeklarasikan variable bernama a yang tipe datanya integer
        System.out.print("Jumlah nama yang ingin di Inputkan: "); //menginput nama dari keyboard menggunakan BufferedReader
        a = Integer.parseInt(kata.readLine()); // mengkonversi variabel a yang bertipe data string menjadi Integer

        String[] Array; // array yang tipe datanya string
        Array=new String[a];
        String temp; // mendeklarasikan variabel temp yang tipe datanya String
        Scanner input=new Scanner(System.in); //menginstansiasi class scanner menjadi variabel yang bernama input

        for(int i=0;i<a;i++) //
        {
            System.out.print("Nama " +(i+1)+" adalah: ");
            Array[i]=input.next();
        }

        for(int x=1;x<a;x++)
        {
            for(int y=0;y<x;y++)
            {
            if(Array[y].compareTo(Array[y+1])>0)
            //membandingkan dan mengurutkan abjad
            {
            temp=Array[y];//
            Array[y]=Array[y+1];//
            Array[y+1]=temp; //
            }
            }
        }
        // output mengurutkan nama
            System.out.println("");
            System.out.println("Nama berdasarkan urutannya "); // menampilkan hasil nama yang telah terurut

        for(int i=0;i<a;i++){
        System.out.println((i+1)+". "+ Array[i]);
        }
        // output jumlah siswa, absen 2 teratas dan absen 2 terbawah
        System.out.println("Jumlah siswa : " + a);
        System.out.println("Absen 2 teratas : " + Array[1]); // menampilkan hasil nama 2 teratas
        System.out.println("Absen 2 terbawah : " + Array[a-2]); // menampilkan hasil nama 2 terbawah
      
}
}


Berikut Hasilnya :






Silahkan

Minggu, 09 September 2012

Static Methods

Kita menggunakan static method untuk mengakses static variable studentCount.

public class StudentRecord
{
private static int studentCount;
public static int getStudentCount(){
return studentCount;
}
}

dimana,
public - Menjelaskan bahwa method ini dapat diakses dari object luar class
static - Method ini adalah static dan pemanggilannya menggunakan
[namaclass].[namaMethod]. Sebagai contoh :
studentRecord.getStudentCount
Int - Tipe return dari method. Mengindikasikan method tersebut harus
mempunyai return value berupa integer
public - Menjelaskan bahwa method ini dapat diakses dari object luar class
getStudentCount - Nama dari method
() - Method ini tidak memiliki parameter apapun

Pada deklarasi di atas, method getStudentCount() akan selalu menghasilkan return value 0
jika kita tidak mengubah apapun pada kode program untuk mengatur nilainya. Kita akan
membahas pengubahan nilai dari studentCount pada pembahasan constructor.

Petunjuk Penulisan Program :
1. Nama method harus dimulai dengan huruf kecil
2. Nama method harus berupa kata kerja
3. Gunakan dokumentasi sebelum mendeklarasikan sebuah method. Anda dapat
Menggunakan JavaDoc.

Sumber : J.E.N.I.

Multiple Return Statements

Anda dapat mempunyai banyak return values pada sebuah method selama mereka tidak
pada blok program yang sama. Anda juga dapat menggunakan konstanta disamping
variabel sebagai return value.

Sebagai contoh, perhatikan method berikut ini :

public String getNumberInWords( int num ){
String defaultNum = "zero";
if( num == 1 ){
return "one"; //mengembalikan sebuah konstanta
}
else if( num == 2){
return "two"; //mengembalikan sebuah konstanta
}
// mengembalikan sebuah variabel
return defaultNum;
}

Sumber : J.E.N.I.

Mutator Methods

Bagaimana jika kita menghendaki object lain untuk mengubah data? Yang dapat kita
lakukan adalah membuat method yang dapat memberi atau mengubah nilai variable dalam
class, baik itu berupa instance maupun static. Method semacam ini disebut dengan mutator
methods. Sebuah mutator method umumnya tertulis set<namaInstanceVariabel>.

Mari kita perhatikan salah satu dari implementasi mutator method :

public class StudentRecord
{
private String name;
:
:
public void setName( String temp ){
name = temp;
}
}

dimana,
public - Menjelaskan bahwa method ini dapat dipanggil object luar class
void - Method ini tidak menghasilkan return value
setName - Nama dari method
(String temp) - Parameter yang akan digunakan pada method
Pernyataan berikut :

name = temp;

mengidentifikasi nilai dari temp sama dengan name dan mengubah data pada instance
variable name.

Perlu diingat bahwa mutator methods tidak menghasilkan return value. Namun berisi
beberapa argumen dari program yang akan digunakan oleh method.

Sumber : J.E.N.I.

Accessor Methods

Untuk mengimplementasikan enkapsulasi, kita tidak menginginkan sembarang object
dapat mengakses data kapan saja. Untuk itu, kita deklarasikan atribut dari class sebagai
private. Namun, ada kalanya dimana kita menginginkan object lain untuk dapat mengakses
data private. Dalam hal ini kita gunakan accessor methods.

Accessor Methods digunakan untuk membaca nilai variabel pada class, baik berupa
instance maupun static. Sebuah accessor method umumnya dimulai dengan penulisan
get<namaInstanceVariable>. Method ini juga mempunyai sebuah return value.

Sebagai contoh, kita ingin menggunakan accessor method untuk dapat membaca nama,
alamat, nilai bahasa Inggris, Matematika, dan ilmu pasti dari siswa.

Mari kita perhatikan salah satu contoh implementasi accessor method.

public class StudentRecord
{
private String name;
:
:
public String getName(){
return name;
}
}

dimana,
public - Menjelaskan bahwa method tersebut dapat diakses dari object luar class
String - Tipe data return value dari method tersebut bertipe String
getName - Nama dari method
() - Menjelaskan bahwa method tidak memiliki parameter apapun

Pernyataan berikut,

return name;

dalam program kita menandakan akan ada pengembalian nilai dari nama instance variable
ke pemanggilan method. Perhatikan bahwa return type dari method harus sama dengan
tipe data seperti data pada pernyataan return. Anda akan mendapatkan pesan kesalahan
sebagai berikut bila tipe data yang digunakan tidak sama :
StudentRecord.java:14: incompatible types
found : int
required: java.lang.String
return age;
^
1 error

Contoh lain dari penggunaan accessor method adalah getAverage,

public class StudentRecord
{
private String name;
:
:
public double getAverage(){
double result = 0;
result = ( mathGrade+englishGrade+scienceGrade )/3;
return result;
}
}

Method getAverage() menghitung rata – rata dari 3 nilai siswa dan menghasilkan nilai
return value dengan nama result.

Sumber : J.E.N.I.

Deklarasi Methods

Sebelum kita membahas method apa yang akan dipakai pada class, mari kita perhatikan
penulisan method secara umum.

Dalam pendeklarasian method, kita tuliskan :

<modifier> <returnType> <name>(<parameter>*) {
<statement>*
}

dimana,
<modifier> dapat menggunakan beberapa modifier yang berbeda
<returnType> dapat berupa seluruh tipe data, termasuk void
<name> identifier atas class
<parameter> ::= <tipe_parameter> <nama_parameter>[,]

Sumber : J.E.N.I.

Class Variable atau Static Variables

Disamping instance variable, kita juga dapat mendeklarasikan class variable atau variabel
yang dimiliki class sepenuhnya. Nilai pada variabel ini sama pada semua object di class
yang sama. Anggaplah kita menginginkan jumlah dari siswa yang dimiliki dari seluruh class,
kita dapat mendeklarasikan satu static variable yang akan menampung nilai tersebut. Kita
beri nama variabel tersebut dengan nama studentCount.
Berikut penulisan static variable :

public class StudentRecord
{
//area deklarasi instance variables
private static int studentCount;
//area penulisan kode selanjutnya

Kita gunakan keyword : ’static’ untuk mendeklarasikan bahwa variabel tersebut adalah
static.

Maka keseluruhan kode yang dibuat terlihat sebagai berikut :

public class StudentRecord
{
private String name;
private String address;
private int age;
private double mathGrade;
private double englishGrade;
private double scienceGrade;
private double average;
private static int studentCount;
//area penulisan kode selanjutnya
}

Sumber : J.E.N.I.