berikut ini ada sebuah soal UAS pemrograman Java,

“Buatlah Program Perkalian dua matriks dengan ordo masing-masing matriks diinputkan,

dan elemen tiap matriks merupakan bilangan acak antara 25-75,

setelah itu simpan hasil outputnya ke sebuah file “.

hmmm ternyata gampang-gampang sussah… hehehehehe…

kebanyakan bingung bagaimana menentukan bilangan acak antara 25-75,

kebanyakan contoh program hanya menyebut angka 0-100 sebagai hasil random.

oke mari kita simak contoh source code berikut ini…

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package UAS;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author xp
 */

public class SoalUAS {

    public static void main(String[] args) {
        int A[][];
        int B[][];

        int BA = 1, KA = 1, BB = 1, KB = 1;
        DataInputStream dis = new DataInputStream(System.in);

        try {
            System.out.println("PROGRAM PERKALIAN DUA MATRIKS");
            System.out.println("MATRIKS A");
            System.out.print("Masukkan Jumlah Baris : ");
            BA = Integer.parseInt(dis.readLine());
            System.out.print("Masukkan Jumlah Kolom : ");
            KA = Integer.parseInt(dis.readLine());
            System.out.println("Matriks B");
            System.out.print("Masukkan Jumlah Baris : ");
            BB = Integer.parseInt(dis.readLine());
            System.out.print("Masukkan jumlah Kolom : ");
            KB = Integer.parseInt(dis.readLine());
            if (KA != BB) {
                System.out.println("MAAF, KOLOM MATRIKS A DAN BARIS MATRIKS B HARUS SAMA");
                System.exit(0);
            }
            A = new int[BA][KA];
            B = new int[BB][KB];

            for (int i = 0; i < A.length; i++) {
                for (int j = 0; j < A[i].length; j++) {
                    A[i][j] = (int) Math.round(Math.random() * 50 + 25);
                }
            }
            for (int i = 0; i < B.length; i++) {
                for (int j = 0; j < B[i].length; j++) {
                    B[i][j] = (int) Math.round(Math.random() * 50 + 25);
                }
            }

            //String yang menjadi output disimpan dalam satu variable
            String hasil = "HASIL DARI PERKALIAN MATRIKS  \n" + toPrintMatriks(A)
                    + "X\n" + toPrintMatriks(B) + "=\n" + toPrintMatriks(perkalianMatriks(A, B));
            System.out.println(hasil);
            String FileName = "";
            System.out.print("\nMasukkan Nama File : ");
            FileName = dis.readLine();
            saveToFile(FileName, hasil);
            System.out.println("DATA SAVED");

        } catch (IOException e) {
        }
    }

    /**
     * Fungsi untuk menghitung perkalian dua matriks yang dilewatkan melalui
     * parameter fungsi.
     *
     * @param A Matriks A (berupa Array 2 Dimensi)
     * @param B Matriks B (berupa Array 2 Dimensi)
     * @return Matriks hasil perkalian A dan B
     */
    private static int[][] perkalianMatriks(int[][] A, int[][] B) {
        int C[][] = new int[A.length][B[0].length];
        for (int i = 0; i < A.length; i++) {
            for (int j = 0; j < B[0].length; j++) {
                C[i][j] = 0;
                for (int k = 0; k < B.length; k++) {
                    C[i][j] += A[i][k] * B[k][j];
                }
            }
        }
        return C;
    }

    /**
     * Fungsi untuk mengembalikan String berupa tampilan matriks yang siap cetak
     * @param M Matriks yang ingin dicetak (berupa Array 2 Dimensi)
     */
    private static String toPrintMatriks(int[][] M) {
        String h = "";
        for (int i = 0; i < M.length; i++) {
            h += "[\t";
            for (int j = 0; j < M[i].length; j++) {
                h += M[i][j] + "\t";
            }
            h += "]\n";
        }
        return h;
    }

    /**
     * Fungsi untuk menyimpan String ke sebuah File
     * Nama file dijadikan sebuag parameter supaya kita bisa
     * merubah nama file yang akan disimpan sesuai dengan keinginan kita
     *
     * @param FileName nama File yang diinginkan
     * @param data Data String yang akan disimpan
     */
    private static void saveToFile(String FileName, String data) {
        try {
            FileOutputStream fos = null;
            File f = new File("C:/folder coba/" + FileName + ".uas");
            fos = new FileOutputStream(f);
            fos.write(data.getBytes());
            fos.close();
        } catch (IOException ex) {
            Logger.getLogger(SoalUAS.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

hmmm… ternyata tak sesulit yang kita kira bukan…???
Math.random() akan menghasilkan bilangan acak antara 0.00 s/d 1.0
jadi kita cuman perlu memanipulasi hasil acakannya supaya sesuai dengan yang kita inginkan.

Semoga bermanfaat… yah