Membuat Diagram PIE untuk Laporan Bulanan Menggunkan Java.
Dalam java telah disediakan suatu library yang dapat digunakan untuk membuat gambar, yang masuk dalam java.awt, komponen-komponen gambar sangat banyak, namun disini hanya akan dibahas beberapa saja.
Komponen pertama adalah setFont() yang berfungsi untuk memberi ketebalan, ukuran, serta jenis huruf. setFont() dapat di isi dengan menggunakan object font (Font p=new Font(“jenis_huruf”,int nilai, int nilai), ).
Selain itu ada juga setColor(Color.BLACK); dalam contoh akan memberikan warna hitam pada pensil atau apa saja yang ditulis dalam kanvas, dalam hal ini adalah Graphic. drawString(string_yang_ditulis,int posisi_x, int posisi_y). fillArc(int posisi_awal_x, int posisi_awal_y, int_posisi_akhir_x, int posisi_akhir_y, int derajat_awal, int derajat_akhir), digunkan untuk membuat sebuah diagram lingkaran yang berisi. Dan terakhir fill3DRec(int posisi_awal_x, int posisi_awal_y, int posisi_akhir_x, int_posisi_akhir_y, Boolean visible), untuk membuat sebuah kotak, perlu diketahui Boolean visible digunakan untuk menampilkan kotak tersebut, dalam hal ini, p[enulis mendefault true karena selalu ditampilkan.
Dengan menggunkan komponen diatas, dapat dibuat sebuah diagram pie yang dapat di integrasikan ke dalam program lain, dalam hal ini penulis membuat sebuah diagram yang berfungsi untuk menampilkan laporan selama satu bulan dalam satuan perhari dalam satu minggu.
Karena berbentuk satu bulan, dan ditampilkan dalam bentuk per hari, maka akan digunakan sebuah pencacah harian, yang mana pencacah harian berisi data numerik, yang terdiri dari senin, selasa, rabu, kamis, jum’at, dan sabtu. Dalam contoh, penulis menggunakan satuan unit untuk tiap harinya.
Skenarionya sebagai berikut. Ketika program dijalankan maka program akan mengambil input dari Operating System mengenai bulan dan tahun, karena return darifungsi Date.getMonth() adalah int yang merefleksikan januari sebagai 0, februari sebagai 1 dst, maka dibuat sebuah fungsi sendiri yaitu getBulan agar diperoleh hasil String nama bulan, selain itu program juga akan mengambil input berupa tahun, hasilnya berupa int jumlah tahun terhitung sejak tahun 1900 (misalkan tahun 2008 maka di OS akan menghasilkan nilai 108 karena 2008-1900=108), Karena kita menginginkan berupa tahun masehi maka hasil ditambah 1900. berikutnya user melakukan input untuk mengisi data harian, kemudian oleh program akan di cek jika total dari input user adalah 0, maka program keluar, namun jika tidak, maka akan dibuat sebuah diagram pie, yang merefleksikan hasil inputan dari user.
Berikut ini adalah source codenya, penulis menggunkan JCreator 3.5 untuk mengompile.
//file Diagram.java
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
import java.io.*;
public class Diagram{
public static void main(String args[]) throws IOException{
try{
Date d=new Date();
String bulan=GetBulan(d.getMonth());
int tahun=d.getYear()+1900;
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
System.out.println("===Program Diagram===");
System.out.println("Masukan Data Bertipe Numerik");
System.out.print("Minggu :");
int minggu=Integer.parseInt(input.readLine());
System.out.print("Senin :");
int senin=Integer.parseInt(input.readLine());
System.out.print("Selasa :");
int selasa=Integer.parseInt(input.readLine());
System.out.print("Rabu :");
int rabu=Integer.parseInt(input.readLine());
System.out.print("Kamis :");
int kamis=Integer.parseInt(input.readLine());
System.out.print("Jum'at :");
int jumat=Integer.parseInt(input.readLine());
System.out.print("Sabtu :");
int sabtu=Integer.parseInt(input.readLine());
Pie p=new Pie();
p.MakePie(minggu,senin,selasa,rabu,kamis,jumat,sabtu,bulan,tahun);
}catch(Exception p){
}
}
static private String GetBulan(int u){
if(u==0)return("Januari");
if(u==1)return("Februari");
if(u==2)return("Maret");
if(u==3)return("April");
if(u==4)return("Mei");
if(u==5)return("Juni");
if(u==6)return("Juli");
if(u==7)return("Agustus");
if(u==8)return("September");
if(u==9)return("Oktober");
if(u==10)return("Nopember");
if(u==11)return("Desember");
return("");
}
}
class Pie extends JApplet {
public void MakePie(int minggu,int senin,int selasa, int rabu, int kamis, int jumat, int sabtu,String bulan, int tahun) {
JFrame frame = new JFrame();
frame.setTitle("Laporan Bulan "+bulan+" "+tahun);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setResizable(false);
JApplet applet = new Pie();
applet.init();
String hari=getDay(minggu,senin,selasa,rabu,kamis,jumat,sabtu);
JPanel panel = new SpiroPanel(minggu,senin,selasa,rabu,kamis,jumat,sabtu, hari);
applet.getContentPane().add(panel);
frame.getContentPane().add(applet);
frame.pack();
frame.setVisible(true);
}
private String getDay(int minggu, int senin, int selasa, int rabu, int kamis, int jumat, int sabtu){
int max=0;
String day="";
if(max<minggu){
max=minggu;
day="Minggu";
}
if(max<senin){
max=senin;
day="Senin";
}
if(max<selasa){
max=selasa;
day="Selasa";
}
if(max<rabu){
max=rabu;
day="Rabu";
}
if(max<kamis){
max=kamis;
day="Kamis";
}
if(max<jumat){
max=jumat;
day="Jum'at";
}
if(max<sabtu){
max=sabtu;
day="Sabtu";
}
return(day);
}
}
class SpiroPanel extends JPanel {
int minggu=0,senin=0,selasa=0,rabu=0,kamis=0,jumat=0,sabtu=0;
String hmax;
public SpiroPanel(int m,int s, int sl, int r, int k, int j, int sb,String hmaxi) {
setPreferredSize(new Dimension(330, 590));
setBackground(Color.GRAY);
minggu=m;
senin=s;
selasa=sl;
rabu=r;
kamis=k;
jumat=j;
sabtu=sb;
hmax=hmaxi;
}
public void paintComponent(Graphics grap) {
super.paintComponent(grap);
Graphics g = (Graphics)grap;
int y=minggu+senin+selasa+rabu+kamis+jumat+sabtu;
if(y==0){
JOptionPane.showMessageDialog(this,"y nol "+y,"",1);
return;
}
int mgu=0,snn,sls,rb,kms,jmt,sbt;
mgu=(minggu*360)/y;
snn=(senin*360)/y;
sls=(selasa*360)/y;
rb=(rabu*360)/y;
kms=(kamis*360)/y;
jmt=(jumat*360)/y;
sbt=360-mgu-snn-sls-rb-kms-jmt;
Font f=new Font("",3,15);
g.setFont(f);
g.setColor(Color.BLACK);
g.fillRoundRect(10,10,300,300,0,mgu);
g.setColor(Color.RED);
g.fillArc(10,10,300,300,0,mgu);
g.fill3DRect(10,320,20,20,true);
g.drawString("Minggu ("+minggu+" unit )",40,340);
g.setColor(Color.YELLOW);
g.fillArc(10,10,300,300,mgu,snn);
g.fill3DRect(10,343,20,20,true);
g.drawString("Senin ("+senin+" unit )",40,363);
g.setColor(Color.BLUE);
snn=snn+mgu;
g.fillArc(10,10,300,300,snn,sls);
g.fill3DRect(10,366,20,20,true);
g.drawString("Selasa ("+selasa+" unit )",40,386);
sls=sls+snn;
g.setColor(Color.GREEN);
g.fillArc(10,10,300,300,sls,rb);
g.fill3DRect(10,389,20,20,true);
g.drawString("Rabu ("+rabu+" unit )",40,409);
rb=rb+sls;
g.setColor(Color.MAGENTA);
g.fillArc(10,10,300,300,rb,kms);
g.fill3DRect(10,412,20,20,true);
g.drawString("Kamis ("+kamis+" unit )",40,432);
kms=kms+rb;
g.setColor(Color.ORANGE);
g.fillArc(10,10,300,300,kms,jmt);
g.fill3DRect(10,435,20,20,true);
g.drawString("Jumat ("+jumat+" unit )",40,455);
jmt=jmt+kms;
g.setColor(Color.CYAN);
g.fillArc(10,10,300,300,jmt,sbt);
g.fill3DRect(10,458,20,20,true);
g.drawString("Sabtu ("+sabtu+" unit )",40,478);
g.setColor(Color.PINK);
g.drawString("Total -- "+y+" unit",40,500);
g.setFont(new Font("",5,15));
g.setColor(Color.WHITE);
g.drawString("Maximal hari "+hmax,20,550);
}
}
Program ini dapat diintegrasikan pada program lain, dengan menambah fungsi lain sesuai kreativitas, seperti yang dilakukan penulis dengan mengintegrasikan pada program laporan hasil penjualan tiket kereta untuk satu bulan. Penulis menambahkan fungsi buatan penulis sendiri agar sinkron dengan program Diagram tersebut.
Masih banyak fungsi lain yang ada di dalam java.awt, silakan dipelajari. Selamat Berkreasi.
berikut ini contoh gambarnya...
Josephus Problem dengan LinkedList menggunakan Jav a.
Linkedlist adalah salah satu bentuk struktur data yang memilki setidaknya dua element yaitu isi atau data yang disimpan kemudian sebuah pointer untuk mendeklarasikan elemen linkedlist lain. Setiap elemen dalam linkedlist disebut dengan Node. Dan pada akhir linked;ist (Node terakhir), referensi pointer node terakhir menunjuk ke null (tidak ada isinya). Dalam programming node pertama dalam linkedlist disebut dengan Head, sedangkan bagian terakhir dari linkedlist disebut dengan tail.
Dalam perkembanganya linkedlist dibedakan atas berbagai jenis antara lain single linkedlist (linkedlist yang hanya memilki satu pointer untuk menunjuk element), double linkedlist (yaitu linkedlist yang memiliki 2 pointer penunjuk elemen yaitu elemen sebelumnya dan elemen sesudahnya), linear linkedlist (linkedlist yang berbentuk memanjang) dan circular linkedlist (yaitu linkedlist yang memutar, bagian head menyambung dengan tail).
Dalam pemrograman, maka struktur yang menempati urutan paling rendah adalah Node, kemudian linkedlist dituunkan dari sebuah Node. Berikut ini adalah deklarasi sebuah Node.
Penjelasanya sebagai berikut, isi yang bertipe int merupakan sebuah data atau informasi yang akan disimpan dalam sebuah linkedlist, dalam hal ini penulis hanya menggunakan sebuah elemen yang akan disimpan, faktanya dalam programming elemen yang disimpan bisa lebih dari satu, misalnya node tentang identitas sesorang, bisa berisi String nama, String alamat, Date tanggal lahir, dan satu yang wajib yaitu elemen penunjuk node berikutnya, dalam contoh dinamakan Next.
Untuk menyelesaikan permasalahan Josephus problem maka kita terlebih dahulu harus mengerti tentang hal ini, josephus adalah seorang komandan perang, suatu ketika ia bersama anak buahnya dikepung oleh musuh, kemudian josephus dan anak buahnya diperintah untuk melakukan sebuah permainan bunuh diri. Dengan aturan kelompok orang tersebut membentuk melingkar, kemudian sebagai kapten, josephus ditunjuk sebagai orang pertama yang menjadi acuan, kemudian dihitung berdasarkan hitungan yang telah ditetapkan, jika hitungan selesai, maka orang yang terakhir dalam hitungan melingkar tersebut dibunuh, kemudian hitungan dilanjutkan lagi dari orang yang berada sebelum orang yang terbunuh tadi, dihitung lagi, kemudian seperti yang tadi, yang terkhir dibunuh lagi begitu seterusnya hingga tersisa satu orang yang selamat, dan yang selamat ini akan dibebaskan oleh musuh. Sehingga jika ada sepuluh ornag misalnya maka penghitungan akan dilakukan sebanyak sembilan kali karena tiap hitungan selesai akan membunuh satu orang, sedangkan para penjahat meminta tersisa satu orang.
Dengan analisis diatas, kita dapat mengumpamakan orang adalah sebuah node dan lingkaran tersebut dideklarasikan menggunkan circular linkedlist dan dalam hal ini tugas sang programmer adalah menentukan siapa yang selamat, dengan input jumlah orang, nama-nama mereka, dan hitungan tiap sesi. Kemudian output yang dihasilkan adalah nama yang selamat dan nama yang mati. Sehingga deklarasi node dapat diubah menjadi.
Simpan dengan nama Node.java, perbedaanya terdapat pada isi yang awalnya bertipe integer sekarang bertipe String, karena berupa nama orang yang akan dimainkan. Secara lengkap Source Code Program Josephus sebagai berikut, penulis menggunkan JCreator v 3.0, tulis source code berikut dan simpan dengan nama josephus.java (karena java bersifat case sensitive maka perhatikan huruf besar dan kecil dalam penamaan variable dan methodenya) :
Compile dan lakukan Run hasil akan diatampilak dalam bentuk Comand Prompt seperti dalam gambar
package paketku; //sesuaikan dengan nama project teman-teman
public class Main {
public static void main(String[] args) {
Server s = new Server();
s.start();
}
}
package paketku; //seuaikan dengan nama project antum...
import java.net.*;
import java.io.*;
import java.util.StringTokenizer;
public class Server extends Thread{
public static final int port=1200; //port yang digunakan, defaultnya 8080
final static String CRLF = "\r\n";
@Override
public void run(){
while(true)
this.terima();
}
public void terima(){
try{
System.out.println("Menunggu Request ");
ServerSocket server = new ServerSocket(port);
Socket cleantsoket = server.accept();
BufferedReader inStream = new BufferedReader(new InputStreamReader(cleantsoket.getInputStream()));
PrintWriter outStream = new PrintWriter(cleantsoket.getOutputStream(),true);
String data = inStream.readLine();
System.out.println("Data Dari client : ( "+data+" )");
System.out.println("Mengirim String Diterima ke client");
StringTokenizer tokens = new StringTokenizer(data);
tokens.nextToken(); // membuang tulisan "GET"
String fileName = tokens.nextToken();
if(fileName.equals("/")){
String baru="<html>" +
"<head><title>INDEX</title></head>" +
"<body>" +
"<a href='localhost:1200/index.php'>POST</a></br>'" +
"<a href='localhost:1200/index.php?var=aku'>GET</a>" +
"</body>" +
"</html>";
outStream.println(baru);
return;
}
StringTokenizer tokens_post = new StringTokenizer(fileName);
fileName=tokens_post.nextToken("?");//dapatkan nama file
String variabel_nama="";//dapat varabel
String variabel_isi="";//dapat isi variabel
if(tokens_post.hasMoreElements()){
StringTokenizer split = new StringTokenizer(tokens_post.nextToken("?"));
variabel_nama=split.nextToken("=");
variabel_isi=split.nextToken("=");
}
boolean fileExists = true;
try {
String hasil="";
String temp="";
while(inputan.ready()){
temp=inputan.readLine();
if(temp.equals("$"+variabel_nama)){
temp=variabel_isi;
}
hasil=hasil+temp;
}
outStream.println(hasil);
} catch (FileNotFoundException e) {
fileExists = false;
}
if (!fileExists) {
String entityBody = "<html>" +
"<head><title>Not Found</title></head>" +
"<body>Not Found</body></html>";
outStream.println(entityBody);
}
}catch(Exception p){
p.printStackTrace();
}
}
private static void sendBytes(FileInputStream fis, OutputStream os) throws Exception{
byte[] buffer = new byte[1024];
int bytes = 0;
while((bytes = fis.read(buffer)) != -1 ) {
os.write(buffer, 0, bytes);
}
}
private static String contentType(String fileName){
if(fileName.endsWith(".htm") || fileName.endsWith(".html")) {
return "text/html";
}
return "application/octet-stream";
}
}
<html><head>
<title>INDEXKU</title>
</head>
<body>
<strong>Ini dari Localhost Java....</strong>
isinya var =
$var
</body>
</html>

Ackerman merupakan sebuah program yang mengimplementasikan fungsi rekursif.....
yang mana ia akan memiliki 3 fungsi .......
/*
This program use to implement Ackerman function
With : a(m,n)------>return(a((m-1),a(m,n-1)))
a(0,n)------>return(n+1)
a(n,0)------>return(a(m-1,1))
Author : huda
e-mail : huda890@gmail.com
*/
/*iporting Input and Output Standart from java*/
import java.io.*;
/*declaration of ackerman class*/
class ackerman
{
/*declaration of main methode*/
public static void main(String args[]) throws IOException
{
/*build object of ackerman class*/
ackerman fungsi=new ackerman();
/*make object for input from console*/
BufferedReader input=new BufferedReader(new
InputStreamReader(System.in));
int m,n;
String temporary;
System.out.println("Ackerman");
System.out.println("a(m,n)------>a((m-1),a(m,n-1))");
System.out.println("a(0,n)------>n+1");
System.out.println("a(n,0)------>a(m-1,1)");
System.out.print("insert value of M:");
/*read string from console*/
temporary=input.readLine();
/*convert string to integer*/
m=Integer.parseInt(temporary);
System.out.print("insert value of N:");
/*read input from console */
temporary=input.readLine();
/*convert from string to integer*/
n=Integer.parseInt(temporary);
/*call ackerman function*/
int result=fungsi.ackerman(m,n);
/*print to console the result*/
System.out.println(result);
}
/*ackerman methode */
int ackerman(int m, int n)
{
int result;
if(m==0 && n!=0)
{return(n+1);}
else
if (n==0 && m!=0)
{
result=ackerman(m-1,1);
/*return the result */
return(resultl);
}
else
if (m!=0 && n!=0)
{
result=ackerman(m,n-1); /*found the result of first function */
/*the result of the first function used to found the second result */
result=ackerman(m-1,result); /*found the final result*/
/*return the result*/
return(hasil);
}
else /*result 1 if n=0 and m=0*/
return(1);
}
}
GCD atau FPB adalah faktor persekutuan terbesar dari dua angka atau lebih. berikut ini source code untuk mencari sebuah FPB dari dua buah angka.....
/*
This class implement of GCD
We recommended you to using Jcreator pro v3.0
Author : huda
e-mail : huda890@gmail.com
*/
import java.io.*;
class gcd
{
public static void main(String args[])throws IOException
{
String temporary;
/*first number*/
int first_number;
/*second number*/
int second_number;
/*build object of gcd class*/
gcd number=new gcd();
/*build for input from konsole*/
BufferedReader input = new BufferedReader(new
InputStreamReader(System.in));
System.out.println("GCD");
System.out.print("insert first number : ");
/*read string from console*/
temporary=input.readLine();
/*convert from temporary to integer and save to first_number*/
first_number=Integer.parseInt(temporary);
System.out.print("insert second number : ");
/*read string from console*/
temporary=input.readLine();
/*convert from temporary to integer and save to first_number*/
second_number=Integer.parseInt(temporary);
/*choose the proses*/
if(first_number>second_number)
number.proses(second_number,first_number);
/*if second number more less than first number*/
else
number.proses(first_number,second_number);
/*if second number more big than first number*/
}
/*the methode for found the gcd*/
int proses(int first,int second)
{
/*pivot is the temporary variable */
int pivot;
if(first!=0)
{
pivot=second;
second=first;
first=pivot%first;
/*recurtion function*/
return(proses(first,second));
}
/*print the gcd to console*/
System.out.println("GCD : "+second);
return(0);
}
}
Stack merupakan sebuah Struktur data yang dapat dibayangkan sebagai sebuah tumpukan (stack = tumpukan). contoh stack dalam kehidupan sehari-hari adalah sebuah tumpukan piring, dimana setiap kali piring terakhir yang kita tumpuk akan diambil terlebih dahulu. sifat stack adalah LIFO (last In forst out) --> artinya setiap data yang masuk terakhir kali akan keluar pertama kali....
berikut ini adalah source code implementasi dari sebuah stack....
/*
This Program Implemet about stack
Author : huda
e-mail : huda890@gmail.com
*/
import java.io.*;
class stack
{
static int MAXIMUMSTACK=10;
public static void main(String args[])throws IOException
{
stack s=new stack(); //build stack class
char temporary_character; //as temporary variabel to save char
String temporary_string; //temporary variabel for casting
int Choose; //this for choose
boolean flag=true; //flag for looping
int top=-1; //pointer of stack
char stack[]=new char[MAXIMUMSTACK]; //build stack object
int long_character=0; //show length of stack
/*make the buffer for input from console*/
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
/*main program*/
System.out.println("Stack");
System.out.print("insert String : ");
/*get char from console one by one */
while((temporary_character=(char)in.read())!='\n')
{
top++;
stack[top]=temporary_character;
}
top--; //character '\n' not use, so it must be pop
/*to show what user want*/
do
{
System.out.println("1.Pop 2.push 3.Print 4.exit");
System.out.print(“Inser your Choose:”);
/*because switch just use for primitif tipe, the string must be convert ot integer*/
temporary_string=in.readLine();
Choose=Integer.parseInt(temporary_string);
/*choosing*/
switch(Choose)
{
case 1: int y=s.pop(stack,top);top=y;break;
/*int y for save the value from return of pop*/
case 2: int x=s.push(stack,top);top=x;break;
/*integer x for save the return from push*/
case 3: s.Print(stack,top);break;
/*for print all data in the stack*/
case 4: flag=false;break;
/*Close porgram */
default : System.out.println("Wrong");
}
}while (flag);
}
/*for check Full stack*/
boolean full(int top)
{
if(top==MAXIMUMSTACK-1) //check stack full or not
return(true); //true if full
return (false); //otherwise false
}
/*for check the stack empty or not */
boolean empty(int top)
{
if(0>top) //check empty or not
return(true); //true if empty
return(false); //otherwise false
}
/*this function to push character*/
int push(char stack[],int top) throws IOException
{
if(!full(top)) //check stack full or not before pushing
{
char character;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Insert A Char : ");
character=(char) br.read(); //get char from console
stack[++top]=character;
/*if stack not full push wil progress*/
return(top);
/*return for x variabel*/
}
else
System.out.println("\nFull");
return(top);
/*return variabel to X*/
}
/*this methode to pop a character*/
int pop(char stack[], int top)
{
if ( empty(top)) //chaeck stack empty or not
{
System.out.println("Empty");
return(top); //return top for y variabel
}
else
{
System.out.println("Character : "+ stack[top]+" pop Succesfull");
return(--top); //return top for y variabel
}
}
/*print stack to console*/
void Print(char stack[], int top)
{
System.out.print("Stack is : ");
/*print all element to console from behind to top, (without pop proses) */
for (int i=0;top=>i;i++)
System.out.print(stack[i]);
System.out.println();
}
}
LinkedList merupakan sebuah struktur data yang mirip dengan Array akan tetapi Linkedlist memiliki perbedaan. Array berupa sebuah larik yang statis, yang mana jika kita memesan 10 lokasi memori kita akan diberi 10 lokasi memori, namun pada kenyataanya kadang-kadang kita membutuhkan lebih dari 10 lokasi memori, sehingga kita harus mengubah source code untuk menambah jumlah memori pada pesanan array source code kita...berbeda dengan linkedlist, walaupun tidak berurutan, linkedlist memilki kelebihan sifatnya yang dinamis membuat kita bebas dalam mengalokasikan memori, sebagai contoh saat kita bisa memesan 10 memori atau 1 memori saja tanpa merubah source code kita. kelebihan array dibanding linkedllist, array memilki data yang terurut sehingga mudah diakses, dan pengaturanya, namun memilki kekurangan pada jumlah memoriya yang statis, sedangkan linkedlist sulit dalam pengaksesanya namun fleksible dalam mengalokasikan memori....
berikut ini adalh contoh linkedlist dalam pemrograman java....
/*
This program Implement about Linked List
Include program
RemoveFirst RemoveLast AddFirst Addlast
InsertAfter InsertBefore Display Find
Author : huda
e-mail : huda890@gmail.com
*/
/*this class implement Node from a linked list*/
public class Node {
int Volume;
Node next;
public Node()
{
Volume=0;
Node next=null;
}
public void displayNode() {
System.out.println(Volume);
}
}
/*this class handle of clas Node*/
import java.io.*;
public class LinkedList {
public Node head;
private Node tail;
private Node cursor;
private Node Help;
/*this methode used to display volume of Node*/
public void Display()
{
cursor=head;
while(cursor!=null)
{
System.out.println("("+cursor.Volume+")");
cursor=cursor.next;
}
}
/*this is constructor*/
public LinkedList() {
head=null;
tail=null;
cursor=null;
Help=null;
}
/*this methode used for check the LinkedList Empty or Not*/
public boolean Empty()
{
if(head==null)
return(true);
return(false);
}
/*this methode used for find the volume of Node*/
public int find(int object)
{
int flag=1;
cursor=head;
while(cursor.Volume!=object && cursor.next!=null)
{
cursor=cursor.next;
flag++;
}
if(cursor.Volume!=object && cursor.next==null)
{
System.out.println("Not Found !!");
return(1);
}
else
{
System.out.println("Found In Index "+flag);
flag=-1;
}
return(flag);
}
/*this methode used for Add Node to the last Node*/
public Node AddLast(int object)
{
Node New_Node=new Node();
New_Node.Volume=object;
if(head==null)
{
head=New_Node;
tail=New_Node;
}
else
{
tail.next=New_Node;
tail=New_Node;
}
return(head);
}
/*this methode used to Add to first element of Linked List*/
public Node AddFirst(int object)
{
Node New_Node=new Node();
New_Node.Volume=object;
if(head==null)
{
head=New_Node;
tail=New_Node;
}
else
{
Help=head;
head=New_Node;
New_Node.next=Help;
}
return(head);
}
/*this methode used to remove first element of Linked List*/
public Node RemoveFirst()
{
if(Empty())
{
System.out.println("Empty!! !!");
return(null);
}
else
{
Help=head;
head=head.next;
Help.next=null;
}
return(head);
}
/*this methode used for remove the Last Element of LinkedList*/
public Node RemoveLast()
{
cursor=head;
if(Empty())
{
System.out.println("Empty!! !!");
return(null);
}
else
{
if(cursor.next==null)
RemoveFirst();
else
{
while(cursor.next.next!=null)
{
cursor=cursor.next;
}
cursor.next=null;
tail=null;
tail=cursor;
}
}
return(head);
}
/*this methode used to Remove the specific Node from the LinkedList*/
public Node RemoveKey(int object)
{
cursor=head;
if(Empty())
{
System.out.println("Empty!!");
return(null);
}
else
{
if(cursor.Volume==object)
RemoveFirst();
else
{
while(cursor.next.Volume!=object)
{
cursor=cursor.next;
}
if(cursor.next.next==null)
RemoveLast();
else
{
Help=cursor.next.next;
cursor.next.next=null;
cursor.next=Help;
}
}
}
return(Help);
}
/*this methode used to Insert a Node between two Node after specific Node*/
public Node InsertAfter(int Sort) throws IOException
{
cursor=head;
if(head==null)
{
System.out.println("Empty!!!");
return(null);
}
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
System.out.print("Insert Volume :");
String temporary=input.readLine();
int object=Integer.parseInt(temporary);
int y=find(Sort);
if(y!=-1)
{
System.out.println("Not Found");
}
else
{
while(cursor.Volume!=Sort && cursor.next!=null)
{
cursor=cursor.next;
}
if(cursor.next==null)
{
AddLast(object);
}
else
{
Node New_Node=new Node();
New_Node.Volume=object;
Help=cursor.next;
cursor.next=New_Node;
New_Node.next=Help;
}
}
return(null);
}
/*this methode used to Insert a Node between two Node after specific Node*/
public Node InsertBefore(int Sort) throws IOException
{
if(head==null)
{
System.out.println("Empty!!!");
return(null);
}
int y=find(Sort);
if(y!=-1)
{
System.out.println("Not Found");
return(null);
}
cursor=head;
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
System.out.print("Insert Volume :");
String temporary=input.readLine();
int object=Integer.parseInt(temporary);
Node New_Node=new Node();
New_Node.Volume=object;
if(head.Volume = = Sort)
{
AddFirst(object);
}
else
{
while(cursor.next.Volume!=Sort && cursor.next.next!=null)
{
cursor=cursor.next;
}
Help=cursor.next;
cursor.next=New_Node;
New_Node.next=Help;
}
return(null);
}
}
/*this clas the main class to handle second class*/
import java.io.*;
class main
{
public static void main(String[] args) throws IOException
{
BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
Node node = new Node();
LinkedList list=new LinkedList();
int Answer=1;
while(Answer = =1)
{
System.out.println("Choose the methode :");
System.out.println("1.AddFirst");
System.out.println("2.AddLast");
System.out.println("3.Find");
System.out.println("4.RemoveFirst");
System.out.println("5.RemoveLast");
System.out.println("6.RemoveKey");
System.out.println("7.InsertAfter");
System.out.println("8.InsertBefore");
System.out.println("9.Display");
System.out.println("10.exit");
System.out.print("insert your choose :");
String temporary=input.readLine();
int choosen=Integer.parseInt(temporary);
switch(choosen)
{
case 1 : System.out.print("Insert Number :");
temporary=input.readLine();
choosen=Integer.parseInt(temporary);
list.AddFirst(choosen);break;
case 2 : System.out.print("Insert Number :");
temporary=input.readLine();
choosen=Integer.parseInt(temporary);
list.AddLast(choosen);break;
case 3 : list.Display();
System.out.print("Insert the Volume you want display:");
temporary=input.readLine();
choosen=Integer.parseInt(temporary);
list.find(choosen);break;
case 4 : list.RemoveFirst();break;
case 5 : list.RemoveLast();break;
case 6 : System.out.print("Insert Key :");
temporary=input.readLine();
choosen=Integer.parseInt(temporary);
list.RemoveKey(choosen);break;
case 7 : System.out.print("Insert Setelah :");
temporary=input.readLine();
choosen=Integer.parseInt(temporary);
list.InsertAfter(choosen);break;
case 8 : System.out.print("Insert Number :");
temporary=input.readLine();
choosen=Integer.parseInt(temporary);
list.InsertBefore(choosen);break;
case 9 : list.Display();break;
case 10: Answer=2;break;
default : System.out.println("Astaghfirullah!!!");break;
}
}
}
}