주어진 문자열 데이터를 가지고 실행결과와 같이 출력되도록 코드를 완성하세요.
데이터의 형식은 문제, 답, 선택지의 순서로 되어 있으며 구분자는 `(숫자1옆의 키)입니다.
[실행결과]
[1] 다음 중 키워드가 아닌 것은?
1.final 2.True 3.if 4.public
1.final 2.True 3.if 4.public
[2] 다음 중 자바의 연산자가 아닌 것은?
1.& 2.| 3.++ 4.!= 5./ 6.^
1.& 2.| 3.++ 4.!= 5./ 6.^
[3] 다음 중 메서드의 반환값이 없음을 의미하는 키워드는?
1.void 2.null 3.false
1.void 2.null 3.false
public static void main(String[] args) {
String[] data = {
"다음 중 키워드가 아닌 것은?`2`final`True`if`public",
"다음 중 자바의 연산자가 아닌 것은?`5`&`|`++`!=`/`^",
"다음 중 메서드의 반환값이 없음을 의미하는 키워드는?`1`void`null`false",
};
for(int i=0;i<data.length;i++) {
String[] dataArray = {};
String[] dataArray2 = {};
dataArray2=data[i].split("`",2);
System.out.println(dataArray2[0]);
dataArray=dataArray2[1].split("`");
for(int j =0; j<dataArray.length;j++){
System.out.print(dataArray[j]+" ");
}System.out.println();
}
}
}
문제1에서 완성된 코드에 사용자 입력을 받아서 정답여부를 판단하여 마지막에 최종점수 실행결과와 같이 출력하도록 코드를 완성하세요.
[실행결과]
[1] 다음 중 키워드가 아닌 것은?
1.final 2.True 3.if 4.public
[답]2
1.final 2.True 3.if 4.public
[답]2
[2] 다음 중 자바의 연산자가 아닌 것은?
1.& 2.| 3.++ 4.!= 5./ 6.^
[답]6
[3] 다음 중 메서드의 반환값이 없음을 의미하는 키워드는?
1.void 2.null 3.false
[답]1
정답개수/전체문항수 :3/3
import java.util.*;
public class QuizEx2 {
public static void main(String[] args) {
String[] data = {
"다음 중 키워드가 아닌 것은?`2`final`True`if`public",
"다음 중 자바의 연산자가 아닌 것은?`6`&`|`++`!=`/`^",
"다음 중 메서드의 반환값이 없음을 의미하는 키워드는?`1`void`null`false`",
};
Scanner s = new Scanner(System.in);
int score = 0;
for(int i=0;i < data.length;i++) {
String[] tmp = data[i].split("`",3);
String question = tmp[0];
String answer = tmp[1];
String[] choices = tmp[2].split("`");
System.out.println("["+(i+1)+"] "+question);
for(int x=0;x < choices.length;x++) {
System.out.print((x+1)+"."+choices[x]+"\t");
}
System.out.println();
String solution = s.nextLine();
if(solution.equals(tmp[1])){
score++;
}
System.out.println();
System.out.println();
}
System.out.print("정답개수/전체문항수: "+score+"/3");
} // main
}
문제2에서 완성된 코드를 이용해서, 문제의 순서를 임의로 바꾸고, 선택지도 임의로 바뀌어 출력되도록 하세요.
[실행결과]
[1] 다음 중 자바의 연산자가 아닌 것은?
1./ 2.| 3.++ 4.!= 5.^ 6.&
[답]5
1./ 2.| 3.++ 4.!= 5.^ 6.&
[답]5
[2] 다음 중 키워드가 아닌 것은?
1.final 2.True 3.if 4.public
[답]2
[3] 다음 중 메서드의 반환값이 없음을 의미하는 키워드는?
1.null 2.void 3.false
[답]2
정답개수/전체문항수 :3/3
import java.util.*;
class QuizEx3 {
public static void main(String[] args) {
String[] data = {
"다음 중 키워드가 아닌 것은?`2`final`True`if`public",
"다음 중 자바의 연산자가 아닌 것은?`6`&`|`++`!=`/`^",
"다음 중 메서드의 반환값이 없음을 의미하는 키워드는?`1`void`null`false`",
};
Scanner s = new Scanner(System.in);
int score = 0;
shuffle(data); // 문제를 섞는다.
for(int i=0;i < data.length;i++) {
String[] tmp = data[i].split("`",3);
String question = tmp[0];
String answer = tmp[1];
String[] choices = tmp[2].split("`");
shuffle(choices); // 선택지를 섞는다.
System.out.println("["+(i+1)+"] "+question);
for(int x=0;x < choices.length;x++) {
System.out.print((x+1)+"."+choices[x]+"\t");
}
System.out.println();
System.out.print("[답]");
String input = s.nextLine();
if(input.equals(answer)) {
score++;
}
System.out.println();
System.out.println();
}
System.out.println("정답개수/전체문항수 :"+score+"/"+data.length);
} // main
public static void shuffle(String[] data) {
// 코드를 완성하세요.
if(data.length<=0){
System.out.print("장난치냐? 잘하자~ 응?");
}else{
for(int i=0; i<data.length*2;i++){
int idx = (int) (Math.random()*data.length);
String temp = data[0];
data[0]=data[idx];
data[idx]=temp;
}
// ScrambledWord 문제의 적용
} // shuffle()
}
}
[출처] [Java1000제] Simple Quiz 2 - 간단한 다지선다형 문제 (남궁성의 코드초보스터디(자바 java, c언어)) |작성자 남궁성
댓글 없음:
댓글 쓰기