Java 웹 개발

21.08.16 - 웹 개발 입문 4일차

개발이란 2021. 8. 16. 12:19

프로그래밍 계산 코드 작성해보기

자바 뿐 아니라 프로그래밍 언어에서는 다음의 전제조건에 의해 데이터를 구분한다.

- 단위는 계산을 복잡하게 하므로 단위는 생략한다.

- 같은 분류의 값들은 변환을 통해서 계산할 수 있다.

- 다른 분류의 값들은 당연히 계산할 수 없다.

- 프로그래머는 이 사실을 반드시 알고 있어야 한다.

 

 

Q : 5000원짜리 자장면 3그릇의 가격은 얼마인가요?

import java.lang.*;
public class Calculate {
	public static void main(String[] args) {
		System.out.println("15000");
		System.out.println(15000);
		System.out.println(5000*3);
	}
}

-> 결과값이 모두 동일하게 출력된다.

 

 

Q : 5000원짜리 자장면 2그릇과 6000원짜리 짬뽕 2그릇을 주문할 때

자장면 합계, 짬뽕 합계, 총 가격 합계를 출력하시오

import java.lang.*;
public class Calculate2 {
	public static void main(String[] args) {
		System.out.println(5000*2);
		System.out.println(6000*2);
		System.out.println(5000*2+6000*2);
	}
}

-> 문제점
1. 무슨 값이 얼마 인지 알 수 없다.
2. 매번 식을 입력 해야한다.
3. 자장면, 짬뽕, 개수 등이 변하면 식을 일일이 고쳐야 한다.

 

 

변수로 표현하기

import java.lang.*;
public class Calculate3 {
	public static void main(String[] args) {
		System.out.println(5000*2);
		System.out.println(6000*2);
		System.out.println(5000*2+6000*2);
		
		int a = 5000*2; //a 라는 이름으로 5000 * 2의 결과를 저장하세요
		int b = 6000*2; //b 라는 이름으로 6000 * 2의 결과를 저장하세요
		
		System.out.println(a);
		System.out.println(b);
		System.out.println(a+b);
	}
}

 

 

더 세부적으로 표현하기

import java.lang.*;
public class Calculate4 {
	public static void main(String[] args) {
		int c = 5000; // 자장면 가격
		int d = 3; // 자장면 수량
		int e = 6000; // 짬뽕 가격
		int f = 2; // 짬뽕 수량
		
		int a = c*d; //a 라는 이름으로 c * d의 결과를 저장하세요
		int b = e*f; //b 라는 이름으로 e * f의 결과를 저장하세요
		
		System.out.println(a);
		System.out.println(b);
		System.out.println(a+b);
	}
}

-> 아직 무슨 값이 얼마 인지 알 수없다

 

 

누구나 알 수 있게 변수 이름 정하기

import java.lang.*;
public class Calculate5 {
	public static void main(String[] args) {
		//입력
		int chinaNoodlePrice = 5000; // 자장면 가격
		int chinaNoodleCount = 3; // 자장면 수량
		int champonPrice = 6000; // 짬뽕 가격
		int champonCount = 2; // 짬뽕 수량
		
		//처리
		int chinaNoodleTotal = chinaNoodlePrice*chinaNoodleCount;
		int champonTotal = champonPrice*champonCount;
		int total = chinaNoodleTotal + champonTotal;
		
		//출력
		System.out.println(chinaNoodleTotal);
		System.out.println(champonTotal);
		System.out.println(total);
	}
}

 

 

Q. 우리 가족은 성인 2명, 청소년 2명, 어린이 1명으로 구성되어 있습니다.
지하철 요금이 다음과 같을때 우리 가족이 지하철을 타기 위해 내야할 금액을 출력
성인, 청소년, 어린이, 총 금액을 출력
<요금표> 성인 : 1250원, 청소년 : 720원, 어린이 : 450원

import java.lang.*;
public class Calculate6 {
	public static void main(String[] args) {
		//입력
		int adultPrice = 1250, adultCount = 2; 
		int teenPrice = 720, teenCount = 2; 
		int childPrice = 450, childCount = 1; 
		
		//처리
		int adultTotal = adultPrice*adultCount;
		int teenTotal = teenPrice*teenCount;
		int childTotal = childPrice*childCount;
		int total = adultTotal + teenTotal + childTotal;
		
		//출력
		System.out.println(adultTotal);
		System.out.println(teenTotal);
		System.out.println(childTotal);
		System.out.println(total);
	}
}

- 정답

adultTotal = 2500

teenTotal = 1440

childTotal = 450

total = 4390

 

 

자료형

- 자바는 값(data)을 8개의 기본형으로 구분 (boolean, char, byte, short, int, long, float, double)

 

자료형 정수 알아보기

 

정수를 변수에 저장한다는 개념

ex) int a = 10; -> "a는 10과 같다"는 잘못된 표현, "a에 10을 넣다"가 맞는 표현 
1. 변수의 형태마다 정해진 크기가 있으며 넘어갈 수 없다.
2. 정수 계산시 범위가 초과되면 순환한다.
3. 모든 정수의 계산은 최소 int 이상의 정수 결과가 나온다.
   ( 정수끼리 계산하면 정수가 나온다.)

 

package decimal; //현재 이 파일의 위치가 첫 줄에 나와야 한다.

import java.lang.*;

public class test01 {
	public static void main(String[] args) {

		// 1
		//byte a = 1000; X
		
		byte a = 100;
		System.out.println(a);
		
		int b = 2100000000;
		System.out.println(b);
		
		long c = 2500000000L; // long은 L표시를 추가한다.
		System.out.println(c);
		
		// 2
		//int d = 1234567 * 1234567; X
		long d = 1234567L * 1234567L;
		System.out.println(d);
		
		int e = 2147483647 + 1;
		System.out.println(e);
		
		// 3
		System.out.println(10 + 20);//30
		System.out.println(10 - 20);//-10
		System.out.println(10 * 20);//200
		System.out.println(10 / 20);//0
		System.out.println(10 % 20);//10
	}
}

 

 

Q. 편의점에서 삼각김밥이 1000원에 판매중입니다. 오늘은 특별히 1+1행사를 진행합니다.
삼각김밥 5개를 구매할 때 예상되는 결제금액을 화면에 출력
(직원은 개수에 대해서 간섭하지 않고 계산만 합니다)

 

-> 먼저 질문에 과정을 정리 해보고 풀어 보면 쉽게 접근할 수 있다.

 

package decimal;

import java.lang.*;

public class test02 {
	public static void main(String[] args) {

		int triangleKimbapPrice = 1000;
		int triangleKimbapCount = 5;
		
		int freeCount = triangleKimbapCount / 2;
		int payCount = triangleKimbapCount - freeCount;
		int totalPrice = payCount * triangleKimbapPrice;
		System.out.println(totalPrice);
		System.out.println(payCount);
		System.out.println(freeCount);
		
	}
}

- 정답

totalPrice = 3000

payCount = 3

freeCount = 2

 

 

Q. 다음 시간과 관련된 계산을 수행하고 결과를 출력해보세요
1. 3시간 35분은 몇 분인지 계싼하여 출력해보세요
2. 어제와 오늘 공부한 시간의 합계를 출력해보세요
어제 : 2시간 50분, 오늘 : 4시간 30분 = 7시간 20분

(사람이 푸는 방식, 컴퓨터가 푸는 방식으로 둘다 해보기)

 

package decimal;

import java.lang.*;

public class test03 {
	public static void main(String[] args) {
		
		//입력(준비)
		int hour = 3, minute = 35;

		//처리 : 1시간은 60분이다
		int total = hour * 60 + minute;

		//출력(결과)
		System.out.println(total);

		//2번 문제

		//입력
		int yesterdayHour = 2 , yesterdayMinute = 50;
		int todayHour = 4 , todayMinute = 30;

		//처리1 : 사람이 푸는 방식(비추천)
		int totalHour = yesterdayHour + todayHour + (yesterdayMinute + todayMinute) / 60;
		int totalMinute = (yesterdayMinute + todayMinute) % 60;

		//출력1
		System.out.println(totalHour);
		System.out.println(totalMinute);

		//처리2 : 컴퓨터가 푸는 방식(가장 낮은 단위로 변환하여 계산 후 복원)
		int yesterdayTime = yesterdayHour * 60 + yesterdayMinute;
		int todayTime = todayHour * 60 + todayMinute;
		int totalTime = yesterdayTime + todayTime;
		int totalHour2 = totalTime / 60;
		int totalMinute2 = totalTime % 60;

		//출력2
		System.out.println(totalTime);
		System.out.println(totalHour2);
		System.out.println(totalMinute2);
				
	}
}

- 정답

1

total = 215

2-1

totalHour = 7

totalMinute = 20

2-2

totalTime = 440

totalMHour2 = 7

totalMinute2 = 20

 

 

Q. 하루에 1시간 30분씩 20일간 공부했을 때의 총 공부 시간을 계산해서 출력하세요.

 

package decimal;

import java.lang.*;

public class test04 {
	public static void main(String[] args) {

		//입력
		int hourPerDay = 1;
		int minutePerDay = 30;
		int period = 20;
		
		//처리
		int totalPerDay = hourPerDay * 60 + minutePerDay; //하루의 총 시간(분)
		int totalTime = totalPerDay * period;
		int totalHour = totalTime / 60;
		int totalMinute = totalTime % 60;
		
		//출력
		System.out.println(totalHour);
		System.out.println(totalMinute);
		 
	}
}

- 정답

totalHour = 30

totalMinute = 0

 

 

Q. pc방에서 7시 50분부터 9시 15분 까지 이용한 손님이 있습니다 
이 손님의 총 이용시간을 계산하여 출력하세요
1시간 이용요금이 600원일 때 이 손님이 계산해야 할 금액을 출력하세요 (1분당 계산)

 

-> 가장 작은 단위로 변환하여 계산 후 복원, 금액을 분단위로 환산하여 시간과 합산

package decimal;

import java.lang.*;

public class test05 {
	public static void main(String[] args) {
		
		//입력(준비)
		int inHour = 7, inMinute = 50;
		int outHour = 9, outMinute = 15;
		int pricePerHour = 600;
		
		// 처리

		int inTime = inHour * 60 + inMinute;
		int outTime = outHour * 60 + outMinute;
		int time = outTime - inTime;
		
		int hour = time / 60;
		int minute = time % 60;
		
		int pricePerMinute = pricePerHour / 60;
		int totalPrice = time * pricePerMinute;
		
		//출력(결과)
		System.out.println(hour);
		System.out.println(minute);
		System.out.println(totalPrice);

	}
}

- 정답

hour = 1

minute = 25

totalPrice = 850