백엔드 과정/Java
Java 문제풀이1-1 / 난수 생성하기 Random()
mim
2021. 12. 22. 18:56
반응형
문제 2번은 반복문이 필요한 문제로 아직 배우지 않은 부분이었고,
수업 끝나고 계속 매달린 결과 출력이 실행된다. 끼야호!
문제 풀면서 너무 어려웠던게 강제형변환이 2번이나 필요했고, 자꾸 전달인자의 정수 길이 만큼 출력이 안되고 24724162541Z 이런식으로 출력되서 너무 어려웠다!!!
결국 풀어낸 방법은 ...
전달인자 length에 담긴 정수를 char형으로 만들고, 이를 Math.random() 함수를 이용해
65~90 ,즉 'A' 까지 'Z'로 범위의 난수 발생시켰다.
ch = (char)((int)(Math.random()*26)+65); 구글링으로 가장 먼저 만들어 낸 코드 였고 이걸 계속 붙잡고 늘어졌다. 이건 꼭 써야될 것 같은데... 하고 주석으로 숨겼다가 여기 넣었다가 다시 숨겼다가..
여튼 이걸 print() 로 개행없이 출력
반복문으로 전달인자의 수 만큼만 진행시킨 뒤 ( 이부분이 자꾸 막혔다!! 정수 길이만큼 출력하고 종료하라고 ~~)
나온 결과 ch를 이번엔 또 String 문자열로 변환시켜야 했다. String.valueOf()
내일 수업에서 반복문을 배운 뒤 더 나은 코드로 짜는 방법은 없는지
구글링으로 겨우겨우 풀어낸 오늘의 결과와 비교해 볼 것이다!! 너무 재밌잖어.

문제
- 첫 번째 인자의 최소값 부터 두 번쨰 인자까지 범위의 난수를 출력 (randomNumber 호출)
- 인자로 전달한 정수 길이의 랜덤한 문자열 영문자를 출력함 (randomUpperAlphabet 호출)
- 가위, 바위, 보 중 한 가지를 출력함 (rockPaperScissors 호출)
- 앞면, 뒷면 중 한 가지를 출력함 (tossCoin 호출)
조건
클래스는 mian메소드가 포함된 Appplication / 메소드가 있는 RandomMaker 로 두 개 생성한 뒤,
모든 메소드는 main 함수에서 호출하여 출력시킨다.
class Application )
public class Application {
public static void main(String[] args) {
/* 문제1번 */
RandomMaker app1 = new RandomMaker();
int randomNumber = app1.randomNumber(-50, 50); //non -static
System.out.println(randomNumber);
/* 문제2번 */
String randomUpperAlphabet = app1.randomUpperAlphabet(10);
System.out.println(randomUpperAlphabet);
/* 문제3번 */
String rockPaperScissors = app1.rockPaperScissors();
System.out.println(rockPaperScissors);
/* 문제4번 */
String ossCoin = app1.ossCoin();
System.out.println(ossCoin);
}
}
출력확인)
-31
FOUIPSDZQQ
바위
앞면
class RandomMaker )
문제1
package com.greedy.level02.normal;
//import java.util.Random; //Random함수를 사용하지 않음.
/**
*<pre>
*class: RandomMaker
*commit: 메소드 리턴값 테스트
*2021/12/22 (tmim) 처음 작성함
*<pre/>
*
* @author tmim
* @version 1.0.0
*
*/
public class RandomMaker {
/**
*<pre>
*최소값부터 최대값까지의 범위의 난수 반환함 (randomNumber 호출)
*</pre>
*/
public int randomNumber(int min, int max) {
int randomNumber = (int)(Math.random() * (min-max))-min;
return randomNumber;
}
}
문제2
/**
*<pre>
*인자로 전달한 정수 길이의 랜덤한 문자열을 출력함
*</pre>
*@param 임의의 정수를 입력해주세요.
*/
public String randomUpperAlphabet(int length) {
// Random r = new Random(); // Math.random 함수를 사용하였음.
char ch= 0;
for (int i = 1; i < length; i++) { // 입력받은 정수의 값 범위 내에서만 출력하도록 반복문작성.
ch = (char)((int)(Math.random()*26)+65); // 영문자의 범위 'A' 65 ~'Z' 90까지의 난수를 만들고, 문자형으로 변환.
System.out.print(ch);} //랜덤한 문자 ch를 print()로 개행없이 출력.
String str = String.valueOf(ch); //반복문으로 출력된 문자 ch를 문자열 형태로 변환.
return str ; // 문자열 str을 리턴함
}
}
문제3
}
/**
*<pre>
*가위, 바위, 보 중 한 가지를 출력함 (rockPaperScissors 호출)
*</pre>
*/
public String rockPaperScissors () {
int random1 = (int)(Math.random() * 3);
String rockPaperScissors = random1 == 0 ? "가위" : (random1 ==1? "바위" : "보");
return rockPaperScissors;
}
}
문제4
/**
*<pre>
*앞면, 뒷면 중 한 가지를 출력하는 메소드 (tossCoin 호출)
*</pre>
*/
public String ossCoin () {
int random2 = (int)(Math.random() * 1);
String ossCoin = random2 == 0 ? "앞면" : "뒷면";
return ossCoin;
}
}
반응형