CLASS MATH JAVA
Tujuan pembelajaran pada bab ini yaitu memanfaatkan library Class Math Java yang sudah disediakan Java untuk melakukan proses perhitungan secara matematis.
A. MATERI
Konstanta Class Math Java
Class Math Java mempunyai beberapa konstanta matematika yang dapat digunakan dalam peroses penhitungan secara matematis untuk pembuatan program. Untuk menggunakan konstanta Class Math Java dengan perintah Math.nama_konstanta, diantaranya:
a.
Math.E
Konstanta dengan nilai 2.718281828459045 untuk logaritma natural e
b.
Math.LN10
Konstanta dengan nilai 2.302585092994046 dari logaritma natural 10
c.
Math.LN2
Konstanta dengan nilai 0.6931471805599453 dari logaritma natural 2
d.
Math.LOG10E
Konstanta dengan nilai 0.4342944819032518 dari logaritma natural e basis 10
e.
Math.LOG2E
Konstanta dengan nilai 1.4426950408889634 dari logaritma natural e basis 2
f.
Math.PI
Konstanta dengan nilai 3.141592653589793 dari nilai pi (π)
g.
Math.SQRT1_2
Konstanta dengan nilai 0.707106781186 dari dari 1 dibagi dengan akar kuadrat 2
h.
Math.SQRT2
Konstanta dengan nilai 1.4142135623730951 untuk hasil akar kuadrat 2
Objek Class Math Java
Objek Class Math Java menyediakan banyak fungsi matematis, dengan daftar sebagai berikut:
a.
Math.abs( )
Fungsi untuk membuat nilai absolute (Nilai Mutlak)
b.
Math.acos( )
c.
Math.asin( )
Fungsi untuk mencari nilai arces sin
d.
Math.atan( )
Fungsi untuk mencari nilai arces tan
e.
Math.atan2( )
Fungsi untuk mencari nilai arces tan 2
f.
Math.ceil( )
Fungsi untuk pembulatan keatas pada sebuah bilangan decimal
g.
Math.cos( )
Fungsi untuk mencari nilai cos
h.
Math.exp( )
Fungsi untuk menghitung operasi exponensial
i.
Math.floor( )
Fungsi untuk pembulatan kebawah pada sebuah bilangan decimal
j.
Math.log( )
Fungsi untuk menghitung nilai logaritma
k.
Math.log10( )
Fungsi untuk menghitung nilai logaritma basis 10
l.
Math.max( )
Fungsi untuk mencari nilai maksimum dari 2 buah angka
m.
Math.min( )
Fungsi untuk mencari nilai minimum dari 2 buah angka
n.
Math.pow( )
Fungsi untuk menghitung operasi pangkat
o.
Math.random( )
Fungsi untuk mencari angka secara random
p.
Math.sin( )
Fungsi untuk mencari nilai sin
q.
Math.tan( )
Fungsi untuk mencari nilai tan
r.
Math.sqrt( )
Fungsi untuk mencari nilai akar sebuah angka
s.
Math.toDegree( )
Fungsi untuk konversi angka mencari derajat
t.
Math.toRadians( )
Fungsi untuk konversi angka menjadi satuan radian
B. INSTRUKSI UJI COBA Uji Coba-1:
Menghitung Nilai Absolute (nilai positif), logika Bahasa manusia yaitu dengan mengkalikan bilangan tersebut dengan “-1”, bila bilangan tersebut adalah bilangan (-) (kurang dari nol)
Uji Coba-2:
Menghitung Nilai Absolute (nilai positif) dengan class Math.abs dimana,
public static int absolute(int number) { if(number < 0) {
number *= -1;
}
return number;
}
public class abs {
public static void main(String[] args) { int a = -2;
int b = 7;
System.out.println("Nilai Absolute a : "+Math.abs(a));
System.out.println("Nilai Absolute b : "+Math.abs(b));
} }
Menghitung Pangkat, logika bahasa manusia secara pemrograman iterasu dimana kondisi a pangkat b yaitu:
- jika pangkatnya (b) <=0 - jika pangkatnya (b) == 0 - jika pangkatnya (b) >= 0
Dengan menggunakan class Math.pow maka kita tinggal menggunakan objek yang sudah disediakan dalam library class math java dimana,
public static int pangkat(int a, int pangkat) { int hasil= 1;
if(pangkat > 0) {
for(int i = 0; i < pangkat; i++) { hasil *= a;
} }
return hasil;
}
public class Pangkat {
public static void main(String[] args) { int a = 2;
int b = 8;
System.out.println("a ^ b = "+Math.pow(a, b));
} }
Uji Coba-4:
Menghitung pembulatan bilangan desimal dengan menggunakan class math java, diantaranya:
- pembulatan ke atas (ceiling) dengan class Math.ceil( ) - pembulatan ke bawah (floor) dengan class Math.floor( )
- pembulatan ke bilangan bulat terdekat dengan class Math.round( )
public class PembulatanDesimal {
public static void main(String[] args) { double a = 3.71;
double b = 3.41;
System.out.println("a = "+a);
System.out.println("b = "+b);
System.out.println("Pembulatan ke atas a = "+ Math.ceil(a));
System.out.println("Pembulatan ke atas b = "+ Math.ceil(b));
System.out.println("Pembulatan ke bawah a = "+
Math.floor(a));
System.out.println("Pembulatan ke bawah b = "+
Math.floor(b));
System.out.println("Pembulatan ke terdekat a = "+
Math.round(a));
System.out.println("Pembulatan ke terdekat b = "+
Math.round(b));
} }
Menghitung dengan fungsi trigonometri sinus, cosinus dan tangen, dimana sudut dalam bentuk radian dengan tipe data double :
- Sinus dengan class Math.sin( ) - Cosinus dengan class Math.cos( ) - Tangen dengan class Math.tan( )
Untuk mendapatkan nilai radian dari sebuah nilai derajat sudut dengan class Math.toRadians()dengan memasukkan derajat sudut sebagai parameter.
Uji Coba-6:
Menggunakan class math java dengan konstanta Phi, dengan nilai Phi berkisar 3.14159. uji coba untuk menghitung luas lingkaran 𝑨 = 𝝅𝒓
𝟐public class CosSinTan {
public static void main(String[] args) { double a = 30;
double b = 45;
System.out.println("Sin 30 = " + Math.sin(Math.toRadians(a)));
System.out.println("Cos 30 = " + Math.cos(Math.toRadians(a)));
System.out.println("Tan 30 = " + Math.tan(Math.toRadians(a)));
System.out.println("Sin 45 = " + Math.sin(Math.toRadians(b)));
System.out.println("Cos 45 = " + Math.cos(Math.toRadians(b)));
System.out.println("Tan 45 = " + Math.tan(Math.toRadians(b)));
} }
public class Phi {
public static void main(String[] args) { int radius = 10;
System.out.println("Luas lingkaran dengan jari-jari "+
radius +" satuan = " + (Math.PI * Math.pow(radius, 2)));
} }
Uji Coba-7:
Mengetahui nilai angka acak/random dari sebuah bilangan dengan menggunakan class Math.floor( ).
Uji Coba-8:
Mencari nilai maksimal dari sebuah bilangan dengan class Math.max().
public class Random {
public static void main(String[] args) { double x;
x = Math.random();
System.out.println(Math.floor((100 * x)));
} }
public class Random {
public static void main(String[] args) { double x;
for(int i = 0; i < 10; i++) { x = Math.random();
System.out.println("Random 0-100, Nilaike-" + i + " = " + Math.floor((100 * x)));
} } }
public class Maks {
public static void main(String[] args) { int A=5;
int B=12;
System.out.println(Math.max(A, B));
} }
Mencari nilai mimimal dari sebuah bilangan dengan class Math.min( ).
Uji Coba-10:
Mencari Akar pangkat dari sebuah bilangan dengan class Math.sqrt().
Mencari Nilai Min public class Min {
public static void main(String[] args) { int A=5;
int B=12;
System.out.println(Math.min(A, B));
} }
public class Akar {
public static void main(String[] args) { double angka=5;
double akar;
akar = Math.sqrt(angka);
System.out.println("Hasil Akar = " + akar);
} }
Mendapatkan Inputan User
Tujuan pembelajaran pada bab ini, membuat suatu program java sesuai dengan jenis perintah input atau output yang diinginkan user dengan Scanner, I/O Stream Buffered Reader dan JOption Pane.
B. MATERI
Java Application Programming Interface (API) sudah berisi ratusan kelas yang bisa digunakan untuk program anda, class tersebut dikumpulkan kedalam packages. Untuk mendapatkan inputan dari keyboard oleh user dengan menggunakan pemrograman Java, terdapat beberapa cara yang dapat dilakukan diantaranya dengan:
Class Scanner
Class Scanner ketika ada perhitungan matematika, maka variabel yang akan digunakan dalam perhitungan tidak perlu di konversikan lagi, bisa langsung dihitung. Deklarasi umum penggunaan kelas scanner adalah sebagai berikut:
Scanner InputData = new Scanner(System.in);
dimana:
- InputData adalah suatu variabel bertipe Scanner
- new Scanner(System.in) berfungsi untuk menciptakan suatu objek bertipe Scanner Class Scanner berada pada paket java.util, maka harus melakukan import terlebih dahulu pada baris sebelum deklarasi class dengan sintaks import java.util.Scanner. Tabel VI.1 berikut merupakan metode Objek Class Scanner,
Tabel Tabel VI.1. Objek Class Scanner Metode Penjelasan
nextByte() Membaca suatu integer bertipe byte nextShort() Membaca suatu integer bertipe short nextInt() Membaca suatu integer bertipe Int nextLong() Membaca suatu integer bertipe long
nextFloat() Membaca suatu angka pecahan bertipe float nextDouble() Membaca suatu angka pecahan bertipe double
next() Membaca suatu string yang berakhir dengan karakter spasi
nextLine() Membaca sebaris teks (suatu string yang berakhir dengan enter)
Class BufferedReader dikonversikan terlebih dahulu sebelum dilakukan perhitungan matematika pada variabel yang akan digunakan, sintaks untuk menggunakan class BufferedReader yaitu,
BufferedReader InputData = new BufferedReader (new InputStreamReader(System.in));
dimana,
InputDatamerupakan sebuah variable dengan tipe kelas BufferedReader
Pada class BufferedReader juga terdapat fungsi untuk menerima inputan dari keyboard yaitu dengan fungsi readLine(), untuk menggunakan BufferedReader maka harus melakukan import terlebih dahulu pada baris sebelum deklarasi class dengan sintaks,
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.io.IOException;
dimana Class BufferedReader, InputStreamReader dan IOException berada dalam java.io package. Packages memiliki kelas yang mempunyai fungsi yang saling berhubungan. java.io packages mengandung class yang memungkinkan program untuk melakukan input dan output data. Selain statement diatas, bisa juga mengeluarkan semua kelas yang berada pada paket dengan perintah
import java.io.*;.Class JOptionPane GUI (Graphical User Interface)
Class JOptionPane yang merupakan packages dari javax.swing, digunakan untuk input dan output data berbasis GUI swing yang didapatkan dari javax.swing package. Tampilannya memudahkan user karena berupa dialog box. Untuk menggunakan Class JOptionPane maka harus melakukan import terlebih dahulu pada baris sebelum deklarasi class dengan sintaks,
import javax.swing.JOptionPane;
sintaks untuk menggunakan class JOptionPane yaitu,
InputData = JOptionPane.showInputDialog("Silahkan Masukan Nama Anda");
dimana,
InputData merupakan sebuah variable dengan tipe class JOptionPaneC. INSTRUKSI UJI COBA
Uji coba proses pemberian nilai pada suatu variabel dengan memberikan nilai melalui dialog dengan user, diantaranya dengan,
a. Class Scanner
b. Buffered Reader
import java.util.Scanner*;
public class Penjumlahan {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
int bilangan1;
int bilangan2;
int total;
System.out.print(“Masukkan bilangan pertama :”);
bilangan1 = input.nextInt();
System.out.print(“Masukkan bilangan kedua :”);
bilangan2 = input.nextInt();
total = bilangan1 + bilangan2;
System.out.print(“Hasil Penjumlahan = %d",total);
} }
import java.io.*;
public class EntryData2{
public Coba() { }
public static void main(String [] args){
InputStream input = System.in;
InputStreamReader reader = new InputStreamReader(input);
BufferedReader buffer = new BufferedReader(reader);
String nim;
System.out.println("NIM : ");
try{
nim = buffer.readLine();
System.out.println("NIM Anda : " + nim);
}catch(IOException e){
System.out.println(e);
} } }
c. I/O Stream
d. JoptionPane
import javax.swing.JOptionPane;
class LatJOptionPane{
public static void main (String[] args) {
String input;
int bilangan;
input = JOptionPane.showInputDialog(“Inputkan sebuah bilangan”);
bilangan = Integer.parseInt(input);
JOptionPane.showMessageDialog(null,”Yang anda Inputkan” + bilangan);
System.exit(0);
} }
import java.io.*;
class EntryData {
public static void main (String[] args) throws Exception {
DataInputStream dis = new DataInputStream(System.in);
System.out.print (“Ketik Nama Anda :”);
String nama = dis.readLine();
System.out.println (“Hallo ”+nama);
} }
Studi Kasus-1:
Modifikasi Studi Kasus-1 pada BAB IV sub Evaluasi dengan menambahkan fitur pada program agar dapat menerima input dari keyboard pengguna. Lakukan modifikasi dengan menggunakan class Scanner.
Pembahasan:
import java.util.Scanner;
public class Penggajian1 {
public static void main(String[] args) { String namaPegawai;
int gaji, jumlahAnak, suamiAtauIstri;
double tunjanganSuamiIstri, tunjanganAnak, penghasilanBruto, iuranPensiun, penghasilanNetto;
Scanner input = new Scanner(System.in);
System.out.println("Masukkan Nama Pegawai: ");
namaPegawai = input.nextLine();
System.out.println("Masukkan Gaji Pokok = ");
gaji = input.nextInt();
System.out.println("Memiliki Suami/Istri (Ya=1/Tidak=0) ? ");
suamiAtauIstri = input.nextInt();
System.out.println("Berapa Jumlah Anak? ");
jumlahAnak = input.nextInt();
tunjanganSuamiIstri = suamiAtauIstri * 0.1 * gaji;
tunjanganAnak = jumlahAnak * 0.02 * gaji;
penghasilanBruto = gaji + tunjanganSuamiIstri + tunjanganAnak;
System.out.println("\n===================================");
System.out.println("Nama Pegawai: "+namaPegawai);
System.out.println("Tunjangan Suami/Istri: "+tunjanganSuamiIstri);
System.out.println("Penghasilan Bruto Per-Bulan = " + penghasilanBruto + "
rupiah");
iuranPensiun = 0.04 * gaji;
penghasilanNetto = penghasilanBruto - iuranPensiun;
System.out.println("Penghasilan Netto Per-Bulan = " + penghasilanNetto + "
rupiah");
//Pembulatan ratusan
int penghasilanNettoBulat = (int) Math.round(penghasilanNetto / 100) * 100;
System.out.println("Penghasilan Netto Per-Bulan (Pembulatan) = " + penghasilanNettoBulat + " rupiah");
} }
Lakukan modifikasi dengan menggunakan class BufferedReader. Sebagai petunjuk, anda diberikan source code sebagai berikut. Namun, ketika source code tersebut dijalankan, masih terdapat error. Perbaiki agar dapat berfungsi sebagaimana mestinya,
import java.io.*;
public class Penggajian2 {
public static void main(String[] args) throws IOException { String namaPegawai;
int gaji, jumlahAnak, suamiAtauIstri;
double tunjanganSuamiIstri, tunjanganAnak, penghasilanBruto, iuranPensiun, penghasilanNetto;
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(input);
System.out.println("Masukkan Nama Pegawai: ");
namaPegawai = br.readLine();
System.out.println("Masukkan Gaji Pokok = ");
gaji = br.readLine();
System.out.println("Memiliki Suami/Istri(Ya=1/Tidak=0)? ");
suamiAtauIstri = br.readLine();
System.out.println("Berapa Jumlah Anak? ");
jumlahAnak = br.readLine();
tunjanganSuamiIstri = suamiAtauIstri * 0.1 * gaji;
tunjanganAnak = jumlahAnak * 0.02 * gaji;
penghasilanBruto = gaji + tunjanganSuamiIstri + tunjanganAnak;
System.out.println("\n=================================");
System.out.println("Nama Pegawai: "+namaPegawai);
System.out.println("Tunjangan Suami/Istri: "+tunjanganSuamiIstri);
System.out.println("Penghasilan Bruto Per-Bulan = " + penghasilanBruto + "
rupiah");
iuranPensiun = 0.04 * gaji;
penghasilanNetto = penghasilanBruto - iuranPensiun;
System.out.println("Penghasilan Netto Per-Bulan = " + penghasilanNetto + "
rupiah");
//Pembulatan ratusan
int penghasilanNettoBulat = (int) Math.round(penghasilanNetto / 100) * 100;
System.out.println("Penghasilan Netto Per-Bulan (Pembulatan) = " + penghasilanNettoBulat + " rupiah");
} }
Pembahasan: Modifikasi dengan Class BufferedReader
import java.io.*;
public class Penggajian1 {
public static void main(String[] args) throws IOException { String namaPegawai;
int gaji, jumlahAnak, suamiAtauIstri;
double tunjanganSuamiIstri, tunjanganAnak, penghasilanBruto, iuranPensiun, penghasilanNetto;
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(input);
System.out.println("Masukkan Nama Pegawai: ");
namaPegawai = br.readLine();
System.out.println("Masukkan Gaji Pokok = ");
gaji = Integer.parseInt(br.readLine());
System.out.println("Memiliki Suami/Istri(Ya=1/Tidak=0)? ");
suamiAtauIstri = Integer.parseInt(br.readLine());
System.out.println("Berapa Jumlah Anak? ");
jumlahAnak = Integer.parseInt(br.readLine());
tunjanganSuamiIstri = suamiAtauIstri * 0.1 * gaji;
tunjanganAnak = jumlahAnak * 0.02 * gaji;
penghasilanBruto = gaji + tunjanganSuamiIstri + tunjanganAnak;
System.out.println("\n================================");
System.out.println("Nama Pegawai: "+namaPegawai);
System.out.println("Tunjangan Suami/Istri: "+tunjanganSuamiIstri);
System.out.println("Penghasilan Bruto Per-Bulan = " + penghasilanBruto + "
rupiah");
iuranPensiun = 0.04 * gaji;
penghasilanNetto = penghasilanBruto - iuranPensiun;
System.out.println("Penghasilan Netto Per-Bulan = " + penghasilanNetto + "
rupiah");
//Pembulatan ratusan
int penghasilanNettoBulat = (int) Math.round(penghasilanNetto / 100) * 100;
System.out.println("Penghasilan Netto Per-Bulan (Pembulatan) = " + penghasilanNettoBulat + " rupiah");
} }
Lakukan modifikasi dengan menggunakan class JOptionPane. Sebagai petunjuk, anda diberikan source code sebagai berikut. Source code tersebut ketika dijalankan juga masih terdapat error. Perbaiki agar dapat berfungsi sebagaimana mestinya,
import javax.swing.*;
public class Penggajian3 {
public static void main(String[] args) { String namaPegawai;
int gaji, jumlahAnak, suamiAtauIstri;
double tunjanganSuamiIstri, tunjanganAnak, penghasilanBruto, iuranPensiun, penghasilanNetto;
namaPegawai = JOptionPane.showInputDialog("Masukkan Nama Pegawai: ");
gaji = JOptionPane.showInputDialog("Masukkan Gaji Pokok = ");
suamiAtauIstri = JOptionPane.showInputDialog("Memiliki Suami/Istri (Ya=1/Tidak=0) ? ");
jumlahAnak = JOptionPane.showInputDialog("Berapa Jumlah Anak?");
tunjanganSuamiIstri = suamiAtauIstri * 0.1 * gaji;
tunjanganAnak = jumlahAnak * 0.02 * gaji;
penghasilanBruto = gaji + tunjanganSuamiIstri + tunjanganAnak;
System.out.println("\n==================================");
System.out.println("Nama Pegawai: "+namaPegawai);
System.out.println("Tunjangan Suami/Istri: "+tunjanganSuamiIstri);
System.out.println("Penghasilan Bruto Per-Bulan = " + penghasilanBruto + "
rupiah");
iuranPensiun = 0.04 * gaji;
penghasilanNetto = penghasilanBruto - iuranPensiun;
System.out.println("Penghasilan Netto Per-Bulan = " + penghasilanNetto + "
rupiah");
//Pembulatan ratusan
int penghasilanNettoBulat = (int) Math.round(penghasilanNetto / 100) * 100;
System.out.println("Penghasilan Netto Per-Bulan (Pembulatan) = " + penghasilanNettoBulat + " rupiah");
} }
Pembahasan: Modifikasi dengan Class JOptionPane
import javax.swing.*;
public class Penggajian3 {
public static void main(String[] args) { String namaPegawai;
int gaji, jumlahAnak, suamiAtauIstri;
double tunjanganSuamiIstri, tunjanganAnak, penghasilanBruto, iuranPensiun, penghasilanNetto;
namaPegawai=JOptionPane.showInputDialog("Masukkan Nama Pegawai: ");
gaji = Integer.parseInt(JOptionPane.showInputDialog("Masukkan Gaji Pokok = "));
suamiAtauIstri =
Integer.parseInt(JOptionPane.showInputDialog("Memili ki Suami/Istri (Ya=1/Tidak=0) ?"));
jumlahAnak = Integer.parseInt(JOptionPane.showInputDialog("Berapa Jumlah Anak? "));
tunjanganSuamiIstri = suamiAtauIstri * 0.1 * gaji;
tunjanganAnak = jumlahAnak * 0.02 * gaji;
penghasilanBruto = gaji + tunjanganSuamiIstri + tunjanganAnak;
System.out.println("\n==============================");
System.out.println("Nama Pegawai: "+namaPegawai);
System.out.println("Tunjangan Suami/Istri: "+tunjanganSuamiIstri);
System.out.println("Penghasilan Bruto Per-Bulan = " + penghasilanBruto + " rupiah");
iuranPensiun = 0.04 * gaji;
penghasilanNetto = penghasilanBruto - iuranPensiun;
System.out.println("Penghasilan Netto Per-Bulan = " + penghasilanNetto + " rupiah");
//Pembulatan ratusan
int penghasilanNettoBulat = (int) Math.round(penghasilanNetto / 100)
* 100;
System.out.println("Penghasilan Netto Per-Bulan (Pembulatan) = " + penghasilanNettoBulat + " rupiah");
} }