Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바수우미양가
- 자바연산자
- 겟셋함수
- 자바상수
- 자바별찍기
- 반복문라벨
- 오라클
- 자바자료형
- 자바기타제어자
- 팩토리얼재귀
- 자바함수
- SQL
- read()함수
- 변수명명규칙
- 기타제어자
- 누승재귀
- 연산자우선순위
- 프로그래머스
- 자바if문
- 변수의 초기화
- 클래스배열
- 자바클래스
- 자바실행방법
- 자바접근지정자
- 중첩for문
- 자바제어문
- 오버로딩
- 효율적인연산
- 자바switch문
- 자바형식
Archives
- Today
- Total
h-i-s-t-o-r-y
[Java] 입력한 정수 n의 근사치인 배열 요소 찾기 본문
package days14;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
/**
* @author user
* @date 2021. 3. 25 - 오후 3:33:31
* @subject 근사치
* @content
*
*/
public class Ex04 {
public static void main(String[] args) {
int [] m = new int[20];
fillRandom(m);
Arrays.parallelSort(m);
System.out.println(Arrays.toString(m));
int n = getNumber();
// 찾는 정수 n의 근사치를 출력하는 함수
// approximateValue(m, n);
// 근사치 출력
int appValue1 = m[0], appValue2 = -1;
int minGap = Math.abs(m[0]-n);
//m[1]-n=gap
int gap;
for (int i = 1; i < m.length; i++) {
gap = Math.abs(m[i]-n);
if (gap < minGap) {
minGap = gap;
appValue1 = m[i];
} else if (gap == minGap) {
appValue2 = m[i];
}
}
System.out.println(appValue2==-1? appValue1: appValue1+" "+appValue2);
}//main
private static void approximateValue(int[] m, int n) {
int appVal = m[0], idx = 0;
for (int i = 0; i < m.length; i++) {
if (Math.abs(m[i]-n) < Math.abs(appVal-n)) {
appVal = m[i];
idx = i;
}
}//for
if (Math.abs(appVal-n) == Math.abs(m[idx+1]-n)) {
int appVal2 = m[idx+1];
System.out.printf("%d의 근사값은 %d번째 위치의 %d, %d번째 위치의 %d입니다.",
n, idx+1, appVal, idx+2, appVal2);
} else {
System.out.printf("%d의 근사값은 %d번째 위치의 %d입니다.", n, idx+1, appVal);
}//if
}//approximateValue
private static int getNumber() {
Scanner scanner = new Scanner(System.in);
System.out.print("> 찾을 정수 입력 ? ");
int n = scanner.nextInt();
return n;
}
private static void fillRandom(int[] m) {
// 중복이 되지 않는 1~100까지의 정수를 m 배열에 채워넣는 코딩
Random rnd = new Random();
int idx = 0, ranNum;
while (idx < 20) {
ranNum = rnd.nextInt(100)+1;
if (!isDuplicate(m, ranNum)) m[idx++] =ranNum;
}
}
private static boolean isDuplicate(int[] m, int ranNum) {
for (int i = 0; i < m.length; i++) {
if(m[i]==ranNum) return true;
}
return false;
}
}//class
'Java' 카테고리의 다른 글
[Java] 객체 생성 예제 (0) | 2021.07.16 |
---|---|
[Java] 객체 지향 프로그래밍 - 클래스(Class) / 객체(Object) / 인스턴스(Instance) (0) | 2021.07.16 |
[Java] 자바 등차수열, 피보나치 수열 (0) | 2021.07.16 |
[Java] 마방진(Magic Square) (0) | 2021.07.16 |
[Java] 자바 ego(자아) (0) | 2021.07.16 |
Comments