Tugas Personal ke-2 (Minggu 7 / Sesi 11)
Tugas Personal 2
1. Manakah dari statement berikut ini yang benar a. int i = new int(20); False
b. double d[] = new double[20]; True c. char[] r = new char(1..20); False d. int i[] = (3,4,5,2); False
e. float f [] = {2.1, 3.4, 5.6}; False f. char[] c = new char(); False
2. Apa yang terjadi apabila program mencoba untuk mengakses sebuah element array dengan index yang salah / invalid ?
Akan muncul error dengan pesan Exception in thread "main"
java.lang.ArrayIndexOutOfBoundsException .
3. Sebutkan 3 cara untuk menduplikasi array dan berikan contohnya a. Menggunakan loop untuk menduplikasi element satu per satu.
Contoh:
b. Menggunakan arraycopy yang terdapat dalam class System
c. Menggunakan Method clone
Kasus :
Buatlah sebuah program Pendataan dan Perhitungan IPS (Indeks Prestasi Semester) . Gunakan Arraylist / vector. Program akan berhenti saat dipilih menu keluar . Program terdiri atas 4 menu yaitu :
1. Pendataan Matakuliah :
a. User akan memasukan jumlah matakuliah yang akan didata
b. Data yang didata adalah nama matakuliah, kode matakuliah, grade , jumlah sks
c. Grade yang dimasukkan harus divalidasi dan hanya bisa berupa A, B, C , D dan E
2. Perhitungan IPS
a. Perhitungan IPS sebagai berikut : IPS =∑(sks x grade) / ∑sks b. Perhitungan Grade sebagai berikut
A = 4
B = 3
C = 2 D = 1 E = 0
3. Update Grade
a. User akan memasukan kode matakuliah yang akan diupdate gradenya b. Grade yang dimasukkan harus divalidasi dan hanya bisa berupa A, B, C , D
dan E 4. Keluar
a. Program akan berhenti Perhatikan contoh tampilan berikut ini Tampilan Awal
Menu 1 : Pendataan Matakuliah
Menu 2 : Perhitungan IPS
Menu 3 : Update Grade
Jawaban kasus:
1. package tp2khalifafirdausy;
2.
3. import java.util.Scanner;
4. import java.util.Arrays;
5. import java.util.ArrayList;
6.
7.
8. public class tp2khalifa{
9. static Scanner in= new Scanner(System.in);
10.static ArrayList<String[]> lstMataKuliah = new ArrayList<String[]>();
11.
12. public static void main(String[] args) { 13. int iMenu=0;
14. while (iMenu!=4){
15.
16. System.out.print ( "Pendataan dan Perhitungan Indeks Prestasi Semest er:\n"
17. + "1. Pendataan Matkul\n"
18. + "2. Perhitungan IPS\n"
19. + "3. Update Grade\n"
20. + "4. Keluar\n"
21. + "Pilih nomor: ");
22.
23. iMenu=in.nextInt();
24. switch (iMenu){
25. case 1:
26. pendataanMataKuliah();
27. break;
28. case 2:
29. perhitunganIPS();
30. break;
31. case 3:
32. updateGrade();
33. break;
34. case 4:
35. break;
36. } 37. } 38. } 39.
40. static boolean isValidGrade(String grade){
41. if ("A".equals(grade.toUpperCase()) || "B".equals(grade.toUpperCase(
))
42. || "C".equals(grade.toUpperCase()) || "D".equals(grade.toUpp erCase())
43. || "E".equals(grade.toUpperCase()) ) 44. return true;
45. else System.out.println ("Input grade matkul yang sesuai(A,B,C,D,E)");
46. return false;
47. } 48.
49. static void pendataanMataKuliah(){
50. System.out.print ("\nInput Jumlah Matkul: ");
51. int iJumlahMk=in.nextInt();
52. lstMataKuliah.clear();
53.
54. for (int i=0;i<iJumlahMk;i++){
55. String arrMk[]= new String[4];
56.
57. System.out.print ("Input Kode Matkul: ");
58. arrMk[0]=in.next();
59.
60. System.out.print ("Input Nama Matkul: ");
61. arrMk[1]=in.next();
62. do {
63. System.out.print ("Input Grade Matkul: ");
64. arrMk[2]=in.next().toUpperCase();
65. } 66.
67. while (!isValidGrade(arrMk[2]));
68. System.out.print ("Input Jumlah SKS: ");
69. arrMk[3]=in.next();
70.
71. lstMataKuliah.add(arrMk);
72. System.out.println();
73. } 74. } 75.
76. static int getGradeFromAlphabet(String alphabet){
77. switch(alphabet){
78. case "A":
79. return 4;
80. case "B":
81. return 3;
82. case "C":
83. return 2;
84. case "D":
85. return 1;
86. case "E" : 87. return 0;
88. } return 0;
89. } 90.
91. static void perhitunganIPS(){
92. System.out.println ("\nMatkul yang di ambil adalah: ");
93. int iSks=0;
94. int iGradeSks=0;
95. for (int i=0; i< lstMataKuliah.size() ;i++){
96.
97. String str=String.format("%s %s \t\t%s \t%s", lstMataKuliah.get(i) [0],
98. lstMataKuliah.get(i)[1], 99. lstMataKuliah.get(i)[2],
100. lstMataKuliah.get(i)[3]);
101.
102. System.out.println(str) ;
103. int iNumGrade= getGradeFromAlphabet(lstMataKuliah.get(i)[2]);
104. int iNumSks= Integer.parseInt(lstMataKuliah.get(i)[3]);
105. iGradeSks=iGradeSks + (iNumGrade*iNumSks);
106. iSks=iSks+iNumSks;
107. } 108.
109. // hitung nilai IPS
110. double dIPS=iGradeSks/iSks;
111. System.out.println(String.format("Nilai IPS anda adalah %s \n"
,dIPS ));
112. } 113.
114. static void updateGrade(){
115. System.out.print("\nInput Kode Mata Kuliah: ");
116. String sKodeMk=in.next();
117. System.out.print("Input Grade Baru: ");
118. String sGrade=in.next();
119.
120. updateGrade(sKodeMk,sGrade);
121. } 122.
123. static void updateGrade(String matakuliah,String newGrade){
124. for (int i=0;i< lstMataKuliah.size(); i++) { 125. if (lstMataKuliah.get(i)
[0].toLowerCase().equals(matakuliah.toLowerCase()) )
126. lstMataKuliah.get(i)[2]=newGrade.toUpperCase();
127. } 128.
129. for (int i=0; i< lstMataKuliah.size() ;i++){
130. String str=Arrays.toString(lstMataKuliah.get(i)).replace("
["," ");
131. str=str.replace("]","");
132. str=str.replaceFirst(",","");
133. str=str.replace(",","\t");
134.
135. System.out.println(String.format(str)) ; 136. }
137. }
138. }