배열 예제

김지원·2022년 5월 25일
0

Java

목록 보기
14/38

예제1) 월세 수금 시스템.

  • 1동을 가지고있고 1~3호의 월세를 수금하는 시스템.
  • 총 월세와 평균월세를 구해보자.
int [] ho = new int[3];
Scanner s = new Scanner(System.in);
int sum = 0;
double avg = 0.0;

for(int i =0; i<ho.length; i++) {
	System.out.println(i+1+"호 월세를 입력하세요.(단위 : 만원)"); 
								//index 0부터 시작임으로 +1해줌                   
	ho[i] = s.nextInt(); //ho는 저장공간 -> 왜? 뒤에 값이 있고 대입연산자 있으니
	sum += ho[i];
}
System.out.println("총 월세 합 : "+ sum +"만원");
avg = (double)sum / ho.length; 

avg = (double)sum / ho.length;

  • 정수(int sum) 와 정수(int ho) 연산 => 정수가 된다.
  • avg는 실수이므로 하나를 실수로 바꿔줘야한다.
    => 평균 월세 :27.666666666666668만원 으로 없는 단위까지 나와버린다.

=> 몇자리까지 출력할건지 지정해줘야 한다.

System.out.println("평균 월세 :" + avg + "만원");
System.out.printf("평균 월세 : %.2f만원", avg);

이런 방법도 있지만 String.format을 사용하자!

avg = Double.parseDouble(String.format("%.2f",(double)sum / ho.length));
System.out.println("평균 월세 :" + avg + "만원"); 

< 풀이 >

  • format : 바꾸다.
  • String.format : 문자열을 뒤에있는 값으로 바꿔준다.
  • %.2f : 소수점 두째자리까지 출력.

즉 format은 String class안에 있다.

  • 바꿔주게 되면 전체적인 형태가 문자열(String)로바뀜.
    -> parseDouble 한 이유
    왜냐면 String은 클래스 type임으로 클래스type으로 변환해줘야 한다.
< 결과 >
1호 월세를 입력하세요.(단위 : 만원)
40
2호 월세를 입력하세요.(단위 : 만원)
45
3호 월세를 입력하세요.(단위 : 만원)
50
총 월세 합 : 135만원
평균 월세 :45.0만원

예제2) ZARA 매출액 구하기

  • 예제1 새끼문제.

강남점, 코엑스점, 명동점의 평균매출액, 총 매출액 구해보자.
단위는 100만원 단위로 입력받는다.
단, 평균 매출액은 만원단위까지 출력한다. (== 소수점2쨰자리까지)

int [] arIncome = new int[3]; //매출액 담는 배열
String [] arName = {"강남점","코엑스점","명동점"};
Scanner s = new Scanner(System.in);
int sum = 0;
int cnt = 0;
double avg = 0.0;
String best = "없음";
	//인센티브 매장이 없다 = 3개의 매장이 매출액이 똑같다.
	//그래서 best의 초기값을 "없음"으로 설정
	//인센티브 매장이 없으면 if문 자체에 안들어가기 때문에 초기값"없음"이 출력됨.
	
	
for(int i =0; i<arIncome.length; i++) {
	System.out.println(arName[i]+"의 매출액을 입력하세요.(단위 : 백만원)");
	arIncome[i] =s.nextInt();
	sum += arIncome[i]; //총 매출액 
}
	
avg = Double.parseDouble(String.format("%.2f", (double)sum/arIncome.length));
System.out.println("ZARA 총 매출액 : " + sum + "백만원");
System.out.println("평균 매출액" + avg + "만원");

+ 인센티브매장을 출력하자.(매출액 > 평균매출액인 매장 출력)

for(int i =0; i<arIncome.length; i++) {
	if(arIncome[i]>avg) {
    cnt++;
    if(cnt == 1) best = "";  
    // best매장이 2.3개가 나올 수도 있으므로 "없음"의 best를 초기화해준다.
    //처음에만 초기화해주세요. cnt == 1 일 때만 초기화해준다.
	best += arName[i] + "\n"; // 그다음 "누적 연결"해준다.
				           //1번째 매장 -> 2번재 매장 출력
	}
}
System.out.println("★인센티브 매장★\n"+best);
< 결과 > : 매출액이 다 다를경우
강남점의 매출액을 입력하세요.(단위 : 백만원)
300
코엑스점의 매출액을 입력하세요.(단위 : 백만원)
400
명동점의 매출액을 입력하세요.(단위 : 백만원)
500
ZARA 총 매출액 : 1200백만원
평균 매출액400.0만원
★인센티브 매장★
명동점
< 결과 > : 매출액이 다 같을경우 ( 인센티브 매장 "없음" 출력 )
강남점의 매출액을 입력하세요.(단위 : 백만원)
300
코엑스점의 매출액을 입력하세요.(단위 : 백만원)
300
명동점의 매출액을 입력하세요.(단위 : 백만원)
300
ZARA 총 매출액 : 900백만원
평균 매출액300.0만원
★인센티브 매장★
없음

0개의 댓글

관련 채용 정보