Program Java Dasar: Menghitung Jumlah Jawaban Ujian Siswa

Halo gan, bagaimana kalo kita belajar membuat program Java sederhana, yang di dalamnya mencakup array satu dimensi, array dua dimensi, while loop, for loop, void method dan return method. Pasti seru ya. Full of logic here, I promise you. Padahal bahasannya sampai saat ini belum sampai sama sekali ke class dan objek..

Tapi ndak apa-apa, toh dengan pondasi yang kuat maka bangunan akan kokoh.

Translate: Untuk pemrograman sangat penting memahami dasar-dasarnya.


Ok, programnya adalah untuk menentukan jumlah berapa jawaban yang benar dari hasil ujian siswa.

Misalkan:

Ada beberapa siswa yang mengikuti ujian dengan soal pilihan berganda, pilihannya yaitu A, B, C, D, E. Kemudian anda diminta untuk membuat program untuk menghitung berapa jumlah soal yang benar yang di jawab oleh masing-masing siswa.

Program ini harus :
  • Bisa menerima input dari user mengenai jumlah siswa yang mengikuti ujian dan input dari jumlah soal ujian yang dikerjakan.
  • Bisa menghitung jumlah jawaban yang benar untuk tiap siswa yang mengikuti ujian
Mudahkan?

Terus bagaimana langkah-langkahnya?

belajar_program_java_sederhana


Oke deh, langsung praktek.

Perhatikan kode di bawah ini:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.util.Scanner;

public class NilaiSiswaJava {
 
 public static void main (String args []){
  
  
 }
 
 public static char [][] buatArray2D(){ 
  
  Scanner input = new Scanner(System.in);
  System.out.print("Berapa jumlah siswa yang "
    + "mengikuti ujian ? ");
    int jumlahSiswa = input.nextInt();
  
  System.out.print("Berapa soal yang diberikan ? ");
    int jumlahSoal = input.nextInt();
    
  char [][] jawabanSiswa  = new char [jumlahSiswa][jumlahSoal];
  
  
  System.out.println("Masukkan jawaban siswa: ");
  
  for (int i = 0; i < jawabanSiswa.length; i ++){
   for (int j = 0; j < jawabanSiswa[i].length; j++){
    jawabanSiswa[i][j] = input.next().charAt(0);
   }
  }
  
  return jawabanSiswa;
 }

}

Oke, kita lihat kode di atas dulu.

Pada line 10, method buatArray2D(), method ini akan mengembalikan array dua dimensi yang berisi jawaban dari para siswa. Karena array dua dimensi itu terdiri dari baris dan kolom, maka kita akan meminta user untuk memasukkan berapa jumlah siswa yang  mengikuti ujian sebagai baris dan jumlah nomor soal bisa dibuat sebagai kolom.

Dengan menggunakan class Scanner, maka anda bisa menyimpan input yang diberikan oleh user kedalam array dua dimensi tersebut berupa jumlah siswa yang ikut ujian dan jumlah nomor soal yang diberikan.

Setelah menerima input, anda bisa membuat array dua dimensi, seperti pada kode di atas, line 20:

char jawabanSiswa [] [] =  new char [jumlahSiswa] [jumlahSoal];

jumlahSiswa merupakan variabel yang sudah diinisialisasi oleh user untuk menentukan banyaknya baris array, dan jumlahSoal untuk menentukan banyaknya kolom.
Setelah anda mengetahui jumlah elemen untuk array jawaban siswa, maka anda bisa memasukkan jawaban para siswa tersebut kedalam array jawabanSiswa, dengan cara apa? Anda bisa gunakan for loop, untuk lebih jelasnya coba lihat line 25 sampai 29 di atas.

Lanjut pada kode di bawah ini:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import java.util.Scanner;

public class NilaiSiswaJava {
 
 static int jumlahSoalKu;
 
 public static void main (String args []){
  
  
 }
 
 public static char [][] buatArray2D(){ 
  
  Scanner input = new Scanner(System.in);
  System.out.print("Berapa jumlah siswa yang "
    + "mengikuti ujian ? ");
    int jumlahSiswa = input.nextInt();
    
    
  
  System.out.print("Berapa soal yang diberikan ? ");
    int jumlahSoal = input.nextInt();
    
    
    
    jumlahSoalKu = jumlahSoal;
    
  char [][] jawabanSiswa  = new char [jumlahSiswa][jumlahSoal];
  
  
  System.out.println("Masukkan jawaban siswa: ");
  
  
  for (int i = 0; i < jawabanSiswa.length; i ++){
   for (int j = 0; j < jawabanSiswa[i].length; j++){
    jawabanSiswa[i][j] = input.next().charAt(0);
   }
  }
  
  return jawabanSiswa;
 }
 
 
 public static char [] buatKunciJawaban(){
  
  char [] kunciJawaban = new char [jumlahSoalKu];
  
  int jumlahSoalAwal = 1;
  int i = 0;
  
  while((jumlahSoalAwal <= jumlahSoalKu) && (i < kunciJawaban.length)){
   Scanner input = new Scanner (System.in);
   System.out.print( "Masukkan kunci jawaban nomor " 
       + (jumlahSoalAwal) + ": " );
   char jawaban = input.next().charAt(0);
   jumlahSoalAwal+=1;
   kunciJawaban[i] = jawaban;
   i+=1;
  }
  return kunciJawaban;
 }
}

Sekarang anda bisa membuat method untuk membuat array biasa, untuk menampung kunci jawaban yang diberikan oleh user. Seperti pada line 44 di atas, kita menggunakan method buatKunciJawaban().

Berapa banyak kunci jawaban yang diperlukan? Tentu saja harus sama banyak dengan jumlah nomor soal yang diberikan. Misalnya soal ujiannya 5 nomor, kunci jawabannya tentunya ada 5 juga. Oleh karena itu anda harus bisa mengambil nilai dari variabel jumlahSoal yang ada pada method buatArray2D(), untuk menentukan jumlah elemen pada array kunciJawaban, perhatikan line 46.

Ingatlah mengenai ruang lingkup variabel. Jadi anda untuk mengakalinya anda bisa membuat variabel static, lihat pada line no. 5:

static int jumlahSoalKu;

Kemudian nilai dari variabel jumlahSoal akan ditetapkan pada variabel jumlahSoalKu, lihat line no. 26 :
jumlahSoalKu = jumlahSoal;

Baru deh anda bisa tetapkan pada array kunciJawaban, lihat line 46 :
char [] kunciJawaban = new char [jumlahSoalKu];

Untuk memasukkan elemen yang berupa kunci jawaban dari user ke dalam array, di sini saya menggunakan while loop.  Lihat line 51 - 59. Mungkin anda bisa menggunakan cara lain yang lebih efisien .

Oke kita lanjut pada penampakan full berikutnya:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import java.util.Scanner;

public class NilaiSiswaJava {
 
 static int jumlahSoalKu;
 static char [] kunciJawabanKu;
 
 public static void main(String args []){
  
  char [][] jawabanUjian = buatArray2D();
  char [] kunciJawabanUjian = buatKunciJawaban();
  hitungJawabanSiswa(jawabanUjian);
  
  
  System.out.println("Array 2D dari jawaban ujian adalah " 
       + java.util.Arrays.deepToString(jawabanUjian));
  
  System.out.println("Array 1D dari kunci jawaban adalah "  + 
       java.util.Arrays.toString(kunciJawabanUjian));
 }
 
 public static char [][] buatArray2D(){ 
  
  Scanner input = new Scanner(System.in);
  System.out.print("Berapa jumlah siswa yang "
    + "mengikuti ujian ? ");
    int jumlahSiswa = input.nextInt();
    
    if(jumlahSiswa<=0){
     System.out.print("Tidak ada siswa yang ikut ujian!, Libur kali!");
     System.exit(0);
    } 
  
  System.out.print("Berapa soal yang diberikan ? ");
    int jumlahSoal = input.nextInt();
    
    if(jumlahSoal<=0){
     System.out.print("Tidak ada soal yang diberikan, ujian tidak jadi!");
     System.exit(0);
    }
  
    
    jumlahSoalKu = jumlahSoal;
    
  char [][] jawabanSiswa  = new char [jumlahSiswa][jumlahSoal];
  
  
  System.out.println("Masukkan jawaban siswa: ");
  
  
  for (int i = 0; i < jawabanSiswa.length; i ++){
   for (int j = 0; j < jawabanSiswa[i].length; j++){
    jawabanSiswa[i][j] = input.next().charAt(0);
   }
  }
  
  return jawabanSiswa;
 }
 
 
 public static char [] buatKunciJawaban(){
  
  char [] kunciJawaban = new char [jumlahSoalKu];
  kunciJawabanKu = kunciJawaban;
  
  int jumlahSoalAwal = 1;
  int i = 0;
  
  while((jumlahSoalAwal <= jumlahSoalKu) && (i < kunciJawaban.length)){
   Scanner input = new Scanner (System.in);
   System.out.print( "Masukkan kunci jawaban nomor " 
       + (jumlahSoalAwal) + ": " );
   char jawaban = input.next().charAt(0);
   jumlahSoalAwal+=1;
   kunciJawaban[i] = jawaban;
   i+=1;
  }
  return kunciJawaban;
 }
 
 
 public static void hitungJawabanSiswa (char [][]jawabanSiswa){
  for (int i = 0; i < jawabanSiswa.length; i++){
   int jumlahJawabanBenar = 0;
   for (int j = 0; j < jawabanSiswa[i].length; j++){
    
    if(jawabanSiswa[i][j] == kunciJawabanKu[j]){
     jumlahJawabanBenar++;
    }
   }
   
   System.out.println("Siswa nomor " + (i+1)
     + " berhasil menjawab dengan benar " + 
     jumlahJawabanBenar +" soal");
  }
  
 }
}

Perhatikan pada line 82, disini digunakan method void, dengan parameter adalah array dua dimensi dengan tipe char. Anda bisa lihat method hitungJawabanSiswa (char [] [] jawabanSiswa), jadi method ini akan melewatkan atau passing nilai dari array dua dimensi.

Method ini akan membandingkan array dua dimensi dari jawaban hasil ujian para siswa dengan kunci jawaban.

Lihat kode pada line 6:

static char kunciJawabanKu[];

Lihat kode pada line 64:

kunciJawabanKu = kunciJawaban;

Kemudian lihat kode pada line 87

if(jawabanSiswa[i][j] == kunciJawabanKu[j])

Saya rasa agan semua sudah mengerti maksudnya. Ya, kita membandingkan array dua dimensi dan satu dimensi.

Kemudian lihat kode pada line 10-12:
char [][] jawabanUjian = buatArray2D();
char [] kunciJawabanUjian = buatKunciJawaban();

Disini array yang dibuat dengan method buatArray2D() dan method buatKunciJawaban() ditetapkan pada variabel referensi yaitu jawabanUjian dan kunciJawabanUjian.

Lanjut lihat line 13:
hitungJawabanSiswa(jawabanUjian);

Method ini akan menghitung jumlah jawaban siswa yang benar.

Sementara itu line 15-19 akan menampilkan array dua dimensi dari jawaban para siswa dan array satu dimensi dari kunci jawabannya.

Kalau line 30-33 dan 38-41, adalah untuk menghentikan program, sebagai tambahan saja sebenarnya, yang terpenting sih pemahaman mengenai array, method, loop, dan variabel dulu.

Contoh output:
Berapa jumlah siswa yang mengikuti ujian ? 3
Berapa soal yang diberikan ? 5
Masukkan jawaban siswa:
a
c
b
a
d
e
d
b
c
a
b
a
e
c
b
Masukkan kunci jawaban nomor 1: a
Masukkan kunci jawaban nomor 2: c
Masukkan kunci jawaban nomor 3: e
Masukkan kunci jawaban nomor 4: d
Masukkan kunci jawaban nomor 5: b
Siswa nomor 1 berhasil menjawab dengan benar 2 soal
Siswa nomor 2 berhasil menjawab dengan benar 0 soal
Siswa nomor 3 berhasil menjawab dengan benar 2 soal
Array 2D dari jawaban ujian adalah [[a, c, b, a, d], [e, d, b, c, a], [b, a, e, c, b]]
Array 1D dari kunci jawaban adalah [a, c, e, d, b]

Oke, semoga program sederhana ini bisa membantu pemahaman mengenai pemrograman Java, terutama bagi pemula. Mohon di share jika dirasa bermanfaat.

Tidak ada komentar

Bahasa Java. Diberdayakan oleh Blogger.