Cara Melewatkan Data, Array, Variabel dari Kelas A ke Kelas B

cara untuk melewatkan data dari class A ke kelas B, adalah dengan membuat method getter dan setternya..
dari kelas A, kita buat button actionnya, yang isinya kurang lebih seperti berikut :

int jumcent = tblCent.getRowCount();
Float[][] cent2 = new Float[jumcent][7];
System.arraycopy(cent, 0, cent2, 0, cent.length);
for(Frame frame: Frame.getFrames()){
if(frame.getTitle().equals(“Form Pengujian”)){
Pengujian uji = (Pengujian) frame;
uji.setJumCent(jumcent);
uji.setCent(cent);
}
}

lalu dari kelas B yang akan menerima data, kita buat method getter and setter nya, seperti berikut :
public class Pengujian extends javax.swing.JFrame {
int jumCent;
Float[][] cent = new Float[jumCent][7];

public int getJumCent(){
return jumCent;
}

public void setJumCent(int jumCent){
this.jumCent = jumCent;
}

public Float[][] getCent(){
FUtama a = new FUtama();
a.getCentTerakhir();
return cent;
}
public void setCent(Float[][] cent){
this.cent = cent;
tampilkan();
}
public void tampilkan(){
String[] kolom = {“id”,”POR”,”JK”,”JB”,”V”,”H”,”M”,”KELAS”};
DefaultTableModel model = new DefaultTableModel(kolom, 0);

for (int i = 0; i < cent.length; i++) {

area2.append(“no. “+i+”\t”+cent[i][1]+”\t”+cent[i][2]+”\t”+cent[i][3]+”\t”+cent[i][4]+”\t”+cent[i][5]+”\t”+cent[i][6]+”\n”);
model.addRow(new Object[] {i+1,cent[i][1],cent[i][2],cent[i][3],cent[i][4],cent[i][5],cent[i][6]});
tblCent.setModel(model);

}
}

Tinggal atur sesuai kebutuhan. Dapat juga seperti berikut implementasinya :
dari kelas A, kita buat button actionnya :
/* Get text from TextField */
String message = textField.getText();
String setNewMessage = “”;
boolean isFrameOpen = false;

if (message != null && message.length() > 0) {
/**
* Get list of opened JFrames
* Read more about “How to get list of opened JFrame in Java Swing?”
* http://www.javaquery.com/2014/06/how-to-get-list-of-opened-jframe-in.html
*/
for (Frame frame : Frame.getFrames()) {
/* Match title of JFrame */
if (frame.getTitle().equals(“Child JFrame”)) {
/* Cast to ChildJFrame */
ChildJFrame childJFrame = (ChildJFrame) frame;
/**
* Access TextArea of ChildJFrame using getter method.
* You can so same for other component like JLabel, Buttons,
* Combobox, List by creating getter and setter method.
*/
String getPreviousMessages = childJFrame.getTextArea().getText();
if (getPreviousMessages.length() > 0) {
/* Append new message to String */
setNewMessage = getPreviousMessages + “\n[” + new Date().toString() + “]: ” + message;
} else {
/* Create new message String */
setNewMessage = “[” + new Date().toString() + “]: ” + message;
}

/* Set value of TextArea */
childJFrame.getTextArea().setText(setNewMessage);
isFrameOpen = true;
}
}

/* If ChildJFrame is not opened yet */
if (!isFrameOpen) {
/* Create new message String */
setNewMessage = “[” + new Date().toString() + “]: ” + message;
/* Create an object of ChildJFrame */
ChildJFrame childJFrame = new ChildJFrame();
/* Set message in TextArea */
childJFrame.getTextArea().setText(setNewMessage);
/* Make ChildJFrame visible */
childJFrame.setVisible(true);
}
} else {
/* Alert box when user try to send blank message */
JOptionPane.showMessageDialog(null, “Type something to send”);
}
}
lalu dari kelas b, kita buat method getter dan setter nya :
public javax.swing.JTextArea getTextArea() {
return textArea;
}

public void setTextArea(javax.swing.JTextArea textArea) {
this.textArea = textArea;
}

sekian semoga bermanfaat….

progress looping iterasi

copy array pake arraycopy masih salah, shg gagal karena ada null
solusi : pke if jika array== null , isi dengan angka, misal: nol..
hsil: masih sama, belum kereplace semua..

harusnya 15 berhenti
solusi : buat klasterBanding
boolean banding = false;
int num=1;
Integer[][] klasterLama = new Integer[jumcent][jumdset];
Integer[][] klasterBanding = new Integer[jumcent][jumdset];

do{
sout(“Iterasi ke “+num);
num++;
Integer[][] klasterBaru = new Integer[jumcent][jumdset];
System.arraycopy(klasterBanding, 0, klasterLama, 0, klasterBanding.length);
System.arraycopy(klasterBaru, 0, klasterBanding, 0, klasterBaru.length);
banding = Arrays.deepEquals(klasterBanding, klasterLama);
}while(banding==false);

progressku

buat perulangan dengan perbandingan array
problem, iterasi tidak berhenti
cent 1,2,3 hasilnya sampai iterasi 16 sudah stabil
namun perulangan terus berjalan

public static void main(String[] args){

int a = 0;
int b = 7;
boolean banding = false;

do{
System.out.println(a);
a++;
if(a==b){
banding = true;
}
}while(banding==false);
}
}

my progress

bandingkan array bentukKlaster dengan bentukKlasterBaru
//cari rata2 baru
inisialisasi jumpor dkk di dalam for
hasil coding 1 = jumpor masih nambah dari klaster sebelumnya
harusnya dimulai dari nol
inisialisasi jumpor dkk diluar for
hasilnya malah nambah banyak

ternyata, error karena arraylist por dkk, masih nyimpan
data sebelunya, sehingga hasilya salah

fix, rata2 per klaster sudah jalan

just piece of script

ArrayList<Float> por = new ArrayList<Float>();
ArrayList<Float> jk = new ArrayList<Float>();
ArrayList<Float> jb = new ArrayList<Float>();
ArrayList<Float> v = new ArrayList<Float>();
ArrayList<Float> h = new ArrayList<Float>();
ArrayList<Float> m = new ArrayList<Float>();

for(int j=0; j<jumcent; j++){
por.clear(); jk.clear(); jb.clear(); v.clear(); h.clear(); m.clear();
for(int i=0;i<jumdset;i++){

if(bentukKlaster[j][i] != null){
por.add(Float.parseFloat(tblTampil.getValueAt(i, 1).toString()));
jk.add(Float.parseFloat(tblTampil.getValueAt(i, 2).toString()));
jb.add(Float.parseFloat(tblTampil.getValueAt(i, 3).toString()));
v.add(Float.parseFloat(tblTampil.getValueAt(i, 4).toString()));
h.add(Float.parseFloat(tblTampil.getValueAt(i, 5).toString()));
m.add(Float.parseFloat(tblTampil.getValueAt(i, 6).toString()));
}
}

float sumpor = 0, sumjk = 0, sumjb = 0,sumv =0, sumh=0, summ=0;

//inisialisasi dari sini masih nambah hasil klaster sebelumnya
//dicoba inisialisasi dari luar hasilnya malah nambah banyak

for(int i=0;i<por.size();i++){
sumpor += por.get(i);
sumjk += jk.get(i);
sumjb += jb.get(i);
sumv += v.get(i);
sumh += h.get(i);
summ += m.get(i);
}
//          System.out.println(“sumpor = “+sumpor);

Float[] rata = new Float[6];
rata[0] = sumpor / por.size();
rata[1] = sumjk / jk.size();
rata[2] = sumjb / jb.size();
rata[3] = sumv / v.size();
rata[4] = sumh / h.size();
rata[5] = summ / m.size();

//          System.out.println(“rata por: “+rata[0]);

for(int k = 1; k<7; k++){
cent[j][k] = rata[k-1];
}
}
System.out.println(“Centroid Baru”);
for (int i = 0; i <jumcent; i++) {
System.out.println(cent[i][0].intValue()+”. “+cent[i][1]+” “+cent[i][2]+” “+cent[i][3]+” “+cent[i][4]+” “+cent[i][5]+” “+cent[i][6]);
area.append(cent[i][0].intValue()+”. “+cent[i][1]+”\t”+cent[i][2]+”\t”+cent[i][3]+”\t”+cent[i][4]+”\t”+cent[i][5]+”\t”+cent[i][6]+”\n”);
}
}

cari lokasi index array di java menggunakan nilai datanya

gunakan script

Arrays.asList(namaArray).indexOf(nilai);

berikut contohnya :

public class ArrayCariIndex {
public static void main(String[] args) {
Integer[] angka = new Integer[5];
angka[0] = 40;
angka[1] = 23 ;
angka[2] = 54 ;
angka[3] = 12 ;
angka[4] = 42 ;
System.out.println(“cari lokasi angka 12”);
System.out.println(“ada di indeks ke- “+Arrays.asList(angka).indexOf(12));
}
}

hasilnya akan diketahui bahwa angka 12 terletak di array indeks ke-3

cara Convert Math.pow() ke float

Math.pow(nilai, pangkat) adalah fungsi bawaan java, namun defaultnya bertipe double dan direturn dalam bentuk double juga

Jika kita memberi masukan int atau float, maka akan muncul error.

Solusinya, convert dulu ke tipe data yang kita inginkan seperti berikut :

int hasil = (int) Math.pow(5,2);

float hasil2 = (float) Math.pow(5.0 , 2.0);

Sekian, Thanks…