문제- a와 b사이의 랜덤수(난수)3개를 출력하세요
단, 랜덤수 3개는 중복되지 않아야 합니다.
<Java를 이용한 코드 짜기>
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Random r = new Random();
// 정수1값, 정수2값선언
int num1;
int num2;
// 알맞는 정수를 입력할때 까지 반복 하는 while문
while (true) {
System.out.print("1번 정수 입력 >>> ");
// 1번 정수 입력 받고 num1에 저장
num1 = sc.nextInt();
System.out.print("2번 정수 입력 >>> ");
// 2번 정수 입력 받고 num2에 저장
num2 = sc.nextInt();
// 만약 정수1-정수2를 한 값이 -2보다 크고, 2보다 작다면
if (-2 < num1 - num2 && num1 - num2 < 2) {
System.out.println("범위가 2 미만입니다. 다시 입력해주세요.");
// 다시 처음부터 입력 받기 위해 while문의 맨 처음으로 이동
continue;
}
break;
}
// 만약 정수1이 정수2보다 크다면
if (num1 > num2) {
// 임시 저장변수에 num1값 저장
int temp = num1;
num1 = num2;
num2 = temp;
}
// 랜덤수1은 정수2-정수1을 하고 다시 1을 더하여 범위를 설정하고, 시작점을 num1으로 지정
int r1 = r.nextInt((num2 - num1) + 1) + num1;
int r2;
int r3;
// 랜덤수2가 뽑힐 떄 까지 도는 while문
while (true) {
// 랜덤수1과 동일
r2 = r.nextInt((num2 - num1) + 1) + num1;
// 만약 r1과 r2가 같지 않다면
if (r1 != r2) {
break;
}
}
// 랜덤수3이 뽑힐 떄 까지 도는 while문
while (true) {
// 랜덤수3과 동일
r3 = r.nextInt((num2 - num1) + 1) + num1;
// 만약 r1과 r3가 다르고, r2와 r3가 다르다면
if (r1 != r3 && r2 != r3) {
break;
}
}
System.out.println(r1 + ", " + r2 + ", " + r3);
sc.close();
}
}
이 코드도 좋지만, 더 나은 코드로 바꿔보자!!!
import java.util.Random; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Random r = new Random(); // 정수1값, 정수2값선언 int num1; int num2; // 알맞는 정수를 입력할때 까지 반복 하는 while문 while (true) { System.out.print("1번 정수 입력 >>> "); // 1번 정수 입력 받고 num1에 저장 num1 = sc.nextInt(); System.out.print("2번 정수 입력 >>> "); // 2번 정수 입력 받고 num2에 저장 num2 = sc.nextInt(); if(-2>= num1-num2 || num1-num2>=2) { break; } System.out.println("범위가 2 미만입니다. 다시 입력해주세요."); } } // 만약 정수1이 정수2보다 크다면 if (num1 > num2) { // 임시 저장변수에 num1값 저장 int temp = num1; num1 = num2; num2 = temp; } final int randomR=(num2 - num1) + 1; // 랜덤수1은 정수2-정수1을 하고 다시 1을 더하여 범위를 설정하고, 시작점을 num1으로 지정 int rand1 = r.nextInt(randomR + 1) + num1; int rand2; int rand3; // 랜덤수2가 뽑힐 떄 까지 도는 while문 while (true) { // 랜덤수1과 동일 rand2 = r.nextInt(randomR) + 1) + num1; // 만약 r1과 r2가 같지 않다면 if (rand1 != rand2) { break; } } // 랜덤수3이 뽑힐 떄 까지 도는 while문 while (true) { // 랜덤수3과 동일 rand3 = r.nextInt(randomR + 1) + num1; // 만약 r1과 r3가 다르고, r2와 r3가 다르다면 if (rand1 != rand3 && rand2 != rand3) { break; } } System.out.println(rand1 + ", " + rand2 + ", " + rand3); sc.close(); } }
'JAVA' 카테고리의 다른 글
배열문제 ① (0) | 2025.01.02 |
---|---|
IF~Else <홀수와 짝수 구하기> (0) | 2025.01.02 |
369게임 (0) | 2025.01.01 |
WHILE문- 무한루프의 늪에서 벗어나고 싶다 (1) | 2024.12.30 |
자바의 조건문 (If~else 구문) (1) | 2024.12.26 |