티스토리 뷰
배열에 관한 두번째 게시물이다. 첫번째 게시물은 아래 링크!
https://live-for-myself.tistory.com/86
오늘도 배열 관련 여러 예제들을 풀어보자 :)
배열에서 Random 사용해보기
문제
String[] items = {"cherry", "apple", "banana", "melon", "7"};
Q1. cherry, apple, banana, melon, 7의 5개의 문자열 중 한개가 랜덤하게 출력되게 해보세요.
Q2. 5개의 문자열 중에서 3개가 한 줄에 한 번에 랜덤하게 출력되게 해보세요.
출력형태
banana | cherry | 7
melon | apple | apple
7 | 7 | 7
Q3. Q2와 같이 출력했을 때, 세 문자열이 동일하다면 특정 점수가 출력되게 해보세요.
모두 "cherry"일 때: "10점 입니다." 출력.
모두 "apple"일 때: "20점 입니다." 출력.
모두 "banana"일 때: "30점 입니다." 출력.
모두 "melon일 때: "40점 입니다." 출력.
모두 "7"일 때: "1000점 입니다." 출력.
세 문자열 중 어느 하나라도 다를 때: "0점 입니다." 출력.
sol 1-1) 랜덤하게 출력되도록 하라 했으니, Random을 import한다.
import java.util.Random;
sol 1-2) Random 객체를 생성한다.
Random rand = new Random();
sol 1-3) 다섯 가지 중 하나가 출력되어야 하므로, 배열의 방번호 0~4를 범위값으로 활용한다.
인덱스 값은 int이므로 nextInt() 메소드를 이용하고, nextInt() 안에 넣는 값은, 그 값을 미만으로 하는 정수를 랜덤하게 뽑도록 하기 때문에, nextInt(5)로 한다.
방번호를 랜덤하게 뽑았으므로, 뽑은 방번호에 해당하는 item의 원소는 items[rand.nextInt[5]]이다.
따라서, 출력까지의 코드는 다음과 같다.
System.out.println(items[rand.nextInt(5)]);
전체 코드 - MainClass07.java
package test.main;
import java.util.Random;
public class MainClass08 {
public static void main(String[] args) {
/*
* hint
*
* String[] items={"cherry", "apple", "banana", "melon","7"};
*
* 2. 5개의 문자열 중에서 3개가 한줄에 한번에 랜덤하게 출력되게 해 보세요
*
*/
String[] items = {"cherry","apple","banana","melon","7"};
Random rand = new Random();
System.out.println(items[rand.nextInt(5)]);
}
}
sol 2-1) 이번에는 3개를 랜덤하게 뽑아야하므로 배열을 활용하면 좋다.
방이 3개짜리인 배열을 선언한다.
int [] nums = new int[3];
sol2-2) 3회 동안, 즉, nums.length 동안, 3개를 랜덤하게 뽑는다.
for(int i=0;i<nums.length;i++) {
nums[i] = rand.nextInt(5);
}
sol2-3) 랜덤하게 뽑은 값을 인덱스로 하는 items의 원소를 먼저 출력하는 코드를 for문안에 넣는다.
이때, "banana | cherry | 7"과 같은 형태로 출력되어야하므로 개행을 하지 않는다.
for(int i=0;i<nums.length;i++) {
nums[i] = rand.nextInt(5);
System.out.print(items[nums[i]]);
}
sol2-4) 원소와 원소 사이에 " | "이 출력되어야 하고, 3번째 원소 출력 후에는 " | "이 출력되면 안되므로, 인덱스가 2가 아닐 때, 즉, 마지막 원소가 아닐 때 " | "를 출력하는 코드를 for문안에 넣는다.
for(int i=0;i<nums.length;i++) {
nums[i] = rand.nextInt(5);
System.out.print(items[nums[i]]);
if(i!=2) {
System.out.print(" | ");
}
}
전체 코드 - MainClass08.java
package test.main;
import java.util.Random;
public class MainClass08 {
public static void main(String[] args) {
/*
* hint
*
* String[] items={"cherry", "apple", "banana", "melon","7"};
*
* 2. 5개의 문자열 중에서 3개가 한줄에 한번에 랜덤하게 출력되게 해 보세요
*
*/
String[] items = {"cherry","apple","banana","melon","7"};
Random rand = new Random();
System.out.println(items[rand.nextInt(5)]);
int [] nums = new int[3];
for(int i=0;i<nums.length;i++) {
nums[i] = rand.nextInt(5);
System.out.print(items[nums[i]]);
if(i!=2) {
System.out.print(" | ");
}
}
}
}
sol3
다음과 같은 프로세스로 코드를 작성하였다.
1) for문을 돌며, 0번째 수와 i번째 수가 같다면 계속해서 반복문을 수행한다.
2) 만약 그렇지 않다면(0번째 수와 i번째 수가 다르다면) "0점 입니다."를 출력하고 포문을 나온다.
3) 만약 0번째 수와 i번째 수가 같은데 인덱스가 2이고 (마지막 원소라면) 모든 원소가 "7"이 아니라면 nums에서 원소에 해당하는 (방번호+1)*10을 점수로하는 문자열을 출력한다.
(체리는 0번째 방 원소이고 10점이고, 인덱스가 1 증가할수록 10점이 증가하기 때문에)
4) 만약 모든 원소가 "7"이라면 "1000점 입니다."를 출력한다.
전체 코드 - MainClass08.java
package test.main;
import java.util.Random;
public class MainClass08 {
public static void main(String[] args) {
/*
* hint
*
* String[] items={"cherry", "apple", "banana", "melon","7"};
*
* 2. 5개의 문자열 중에서 3개가 한줄에 한번에 랜덤하게 출력되게 해 보세요
*
*/
String[] items = {"cherry","apple","banana","melon","7"};
Random rand = new Random();
System.out.println(items[rand.nextInt(5)]);
int [] nums = new int[3];
for(int i=0;i<nums.length;i++) {
nums[i] = rand.nextInt(5);
System.out.print(items[nums[i]]);
if(i!=2) {
System.out.print(" | ");
}
}
System.out.println();
for(int i=1;i<nums.length;i++) {
//0번째 숫자와 i번째 수가 같다면
if(nums[i]==nums[0]) {
// 숫자 3개가 모두 같다면
if(i==2) {
//7 7 7이 아니면
if(nums[0]!=4) {
System.out.println((nums[0]+1)*10+"점 입니다.");
}
//7 7 7 이면 1000출력
else {
System.out.println("1000점 입니다.");
}
}
}
//숫자 3개 중 어느 것 하나라도 같지 않다면 0점입니다 출력하고 포문 나오기
else {
System.out.println("0점 입니다.");
break;
}
}
}
}
'development > Java' 카테고리의 다른 글
[Java] 상속 Inheritance #1 / extends, super, 다형성(polymorphism), 상속에서의 casting (0) | 2021.11.03 |
---|---|
[Java] While문 / 문자열 비교하기 .equals(), 무한 루프 , 탈출 조건, break() (0) | 2021.11.02 |
[Java] 배열 Array #1 / 확장 for문, Class 객체 배열 생성하기, 입력받은 값을 배열에 집어넣기 (0) | 2021.11.02 |
[Java] Wrapper Class (0) | 2021.11.02 |
[Java] 여러 클래스 사용해보기 / Scanner, JFrame, Random, 참조 방식, 문자열 길이 (0) | 2021.11.02 |
- Total
- Today
- Yesterday
- 문자열
- brute force
- 자바
- 스프링
- Django
- html
- 정렬
- 자바스크립트
- 프로그래머스
- 파이썬
- CSS
- python
- jsp
- 큐
- 덱
- 고득점 키트
- web
- jQuery
- bootstrap
- R
- Java
- append
- 백준
- baekjoon
- Oracle
- 브루트 포스
- 단계별로풀어보기
- javascript
- Case When
- 장고
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |