만년달력(요일구하기)


1. 1년 1월 1일부터 전년도 12월 31일까지의 총 날짜수 구함.

var total = (year-1)*365 + ((year-1)/4 - (year-1)/100 + (year-1)/400);



2. 해당년도 1월 1일부터 해당년도 해당월 1일까지의 총 날짜수 구함.

var m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

for (var a=0; a<month-1; a++) {

total += m[a];

}


//해당월 1일 때문에 +1

total++;

//올해가 윤년이면서 2월 이상인 경우 +1

if (month>=3 && (year%4==0 && year%100!=0 || year%400==0)) {

total++;

}


3. 해당년도 해당월의 첫 날(1일)의 요일(일, 월, 화, 수, 목, 금, 토) 구함.

var d = ["일", "월", "화", "수", "목", "금", "토"];

var days = total % 7;


var result = document.getElementById("result");

result.innerHTML = d[days] + "요일";



문제) 특정 년, 월, 일 입력시 요일 구하기. 자바스크립트 이용.

실행 예)

년도 [2012 ]  월 [10 ]  일 [8  ]  [결과]


결과 : 월요일


//Script29.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<style type="text/css">

.style01 {

width:80px;

}

</style>

<script type="text/javascript">

function myFunc() {

//입력한 년, 월, 일 값 읽어오기->문자열

var yObj = document.getElementById("year");

var mObj = document.getElementById("month");

var dObj = document.getElementById("day");

//문자열->숫자

var year = parseInt(yObj.value);

var month = parseInt(mObj.value);

var day = parseInt(dObj.value);

//전년도까지의 총 날짜수 계산

//윤년 계산시 나누기 연산이 실수형이라서 최종 결과가 정수형이 되도록 parseInt() 함수 사용.

var total = (year-1)*365 + parseInt((year-1)/4) - parseInt((year-1)/100) + parseInt((year-1)/400);

//해당년도 전월까지의 총 날짜수 계산

var m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

for (var a=0; a<month-1; a++) {

total += m[a];

}

//해당년도가 윤년이면서 2월 이상인 경우 +1

if (month>=3 && (year%4==0 && year%100!=0 || year%400==0)) {

total++;

}


//해당월의 특정일까지의 총 날짜수 계산

total += day;


//총 날짜수(정수형)를 7로 나눈 나머지 계산->요일에 대한 순번

var days = total % 7;

//alert(days);

var d = ["일", "월", "화", "수", "목", "금", "토"];

var result = document.getElementById("result");

result.innerHTML = d[days] + "요일";

}

</script>

</head>

<body>

<div>

<h2>만년달력 요일 구하기</h2>

<h3>입력 ---------------</h3>

<form>

년 <input type="text" id="year" class="style01">

월 <input type="text" id="month" class="style01">

일 <input type="text" id="day" class="style01">

<input type="button" value="결과"

onclick="myFunc()">

</form>

<h3>출력 ---------------</h3>

<div id="result"></div>

</div>

</body>

</html>




//Script29.html & daysCalc.js 에서 daysCalc.js

function daysCalc(year, month, day) {

//year, month, day는 정수형 데이터만 가능

//전년도까지의 총 날짜수 계산

//윤년 계산시 나누기 연산이 실수형이라서 최종 결과가 정수형이 되도록 parseInt() 함수 사용.

var total = (year-1)*365 + parseInt((year-1)/4) - parseInt((year-1)/100) + parseInt((year-1)/400);

//해당년도 전월까지의 총 날짜수 계산

var m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

for (var a=0; a<month-1; a++) {

total += m[a];

}

//해당년도가 윤년이면서 2월 이상인 경우 +1

if (month>=3 && (year%4==0 && year%100!=0 || year%400==0)) {

total++;

}


//해당월의 특정일까지의 총 날짜수 계산

total += day;


//총 날짜수(정수형)를 7로 나눈 나머지 계산->요일에 대한 순번

var days = total % 7;

return days;

}





//Script29.html & daysCalc.js 에서 Script29.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<style type="text/css">

.style01 {

width:80px;

}

</style>

<script type="text/javascript" src="daysCalc.js"></script>

<script type="text/javascript">

function myFunc() {

//입력한 년, 월, 일 값 읽어오기->문자열

var yObj = document.getElementById("year");

var mObj = document.getElementById("month");

var dObj = document.getElementById("day");

//문자열->숫자

var year = parseInt(yObj.value);

var month = parseInt(mObj.value);

var day = parseInt(dObj.value);

//년, 월, 일 데이터로 요일 계산 함수 호출

var days = daysCalc(year, month, day);

//alert(days);

var d = ["일", "월", "화", "수", "목", "금", "토"];

var result = document.getElementById("result");

result.innerHTML = d[days] + "요일";

}

</script>

</head>

<body>

<div>

<h2>만년달력 요일 구하기</h2>

<h3>입력 ---------------</h3>

<form>

년 <input type="text" id="year" class="style01">

월 <input type="text" id="month" class="style01">

일 <input type="text" id="day" class="style01">

<input type="button" value="결과"

onclick="myFunc()">

</form>

<h3>출력 ---------------</h3>

<div id="result"></div>

</div>

</body>

</html>






문제) 만년달력 출력. 자바스크립트 이용.


//Script30.html & daysCalc.js 에서 daysCalc.js (lastDay() 함수 추가됨)

function daysCalc(year, month, day) {

//year, month, day는 정수형 데이터만 가능

//전년도까지의 총 날짜수 계산

//윤년 계산시 나누기 연산이 실수형이라서 최종 결과가 정수형이 되도록 parseInt() 함수 사용.

var total = (year-1)*365 + parseInt((year-1)/4) - parseInt((year-1)/100) + parseInt((year-1)/400);

//해당년도 전월까지의 총 날짜수 계산

var m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

for (var a=0; a<month-1; a++) {

total += m[a];

}

//해당년도가 윤년이면서 2월 이상인 경우 +1

if (month>=3 && (year%4==0 && year%100!=0 || year%400==0)) {

total++;

}


//해당월의 특정일까지의 총 날짜수 계산

total += day;


//총 날짜수(정수형)를 7로 나눈 나머지 계산->요일에 대한 순번

var days = total % 7;

return days;

}


function lastDay(year, month) {

//year, month는 정수형만 가능

var m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

var day = m[month-1];

if (month==2 && (year%4==0 && year%100!=0 || year%400==0)) {

day = 29;

}


return day;

}



//Script30.html & daysCalc.js 에서 Script30.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<style type="text/css">

.style01 {

width:80px;

}

td {

padding:2px;

}

</style>

<script type="text/javascript" src="daysCalc.js"></script>

<script type="text/javascript">

function myFunc() {

//입력한 년, 월, 일 값 읽어오기->문자열

var yObj = document.getElementById("year");

var mObj = document.getElementById("month");

var year = parseInt(yObj.value);

var month = parseInt(mObj.value);

//요일 계산 전용 함수 호출

var week = daysCalc(year, month, 1);

//alert(week);

//마지막 날짜 구하는 함수 호출

var lastday = lastDay(year, month);

var str = "";

str += "<table><tbody>";

str += "<tr><th>일</th><th>월</th><th>화</th><th>수</th><th>목</th><th>금</th><th>토</th></tr>";

str += "<tr>";

//해당월 1일의 특정 요일에 해당하는 빈 칸 출력

for (var a=1; a<=week; a++) {

str += "<td></td>";

}

//해당월 1일부터 마지막 날까지 출력

for(var a=1; a<=lastday; a++) {

str += "<td style=\"text-align:center\">"+a+"</td>";

//일주일 단위로 행 변경

if (((a+week)%7)==0) {

str += "</tr><tr>";

}

}

str += "</tr></tbody></table>";

var result = document.getElementById("result");

result.innerHTML = str;

}

</script>

</head>

<body>

<div>

<h2>만년달력 출력</h2>

<h3>입력 ---------------</h3>

<form>

년 <input type="text" id="year" class="style01">

월 <input type="text" id="month" class="style01">

<input type="button" value="결과"

onclick="myFunc()">

</form>

<h3>출력 ---------------</h3>

<div id="result"></div>

</div>

</body>

</html>






문제) 만년달력 출력2. 자바스크립트 이용.


//Script31.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<style type="text/css">

.style01 {

width:80px;

}

td {

padding:2px;

}

</style>

<script type="text/javascript" src="daysCalc.js"></script>

<script type="text/javascript">

function myFunc() {

//입력한 년, 월, 일 값 읽어오기->문자열

var yObj = document.getElementById("year");

var mObj = document.getElementById("month");

var year = parseInt(yObj.options[yObj.selectedIndex].value);

var month = parseInt(mObj.options[mObj.selectedIndex].value);

//요일 계산 전용 함수 호출

var week = daysCalc(year, month, 1);

//alert(week);

//마지막 날짜 구하는 함수 호출

var lastday = lastDay(year, month);

var str = "";

str += "<table><tbody>";

str += "<tr><th>일</th><th>월</th><th>화</th><th>수</th><th>목</th><th>금</th><th>토</th></tr>";

str += "<tr>";

//해당월 1일의 특정 요일에 해당하는 빈 칸 출력

for (var a=1; a<=week; a++) {

str += "<td></td>";

}

//해당월 1일부터 마지막 날까지 출력

for(var a=1; a<=lastday; a++) {

str += "<td style=\"text-align:center\">"+a+"</td>";

//일주일 단위로 행 변경

if (((a+week)%7)==0) {

str += "</tr><tr>";

}

}

str += "</tr></tbody></table>";

var result = document.getElementById("result");

result.innerHTML = str;

}

</script>

</head>

<body>

<div>

<h2>만년달력 출력</h2>

<h3>입력 ---------------</h3>

<form>

년 <select id="year" onchange="myFunc()"><option value="2011">2011년</option><option value="2012">2012년</option><option value="2013">2013년</option></select>

월 <select id="month" onchange="myFunc()"><option value="1">1월</option><option value="2">2월</option><option value="3">3월</option><option value="4">4월</option><option value="5">5월</option><option value="6">6월</option><option value="7">7월</option><option value="8">8월</option><option value="9">9월</option><option value="10">10월</option><option value="11">11월</option><option value="12">12월</option></select>

</form>

<h3>출력 ---------------</h3>

<div id="result"></div>

</div>

</body>

</html>







난수 발생


1. 0 부터 1 사이의 무작위 숫자를 난수라고 함.


2. Math.random() 메소드 이용.



//Script32.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">

function myFunc() {

var str ="";

for (var a=1; a<=10; a++) {

//1~100 사이의 난수

str += (parseInt(Math.random()*100)+1) + " ";  

}

var result = document.getElementById("result");

result.innerHTML = str;

}

</script>

</head>

<body>

<div>

<h2>난수 발생 테스트</h2>

<form>

<input type="button" value="결과"

onclick="myFunc()">

</form>

<h3>출력 ------------</h3>

<div id="result"></div>

</div>

</body>

</html>






문제) 여러개의 난수를 발생시키고, 난수들 중에서 가장 큰 값과 가장 작은 값을 별도 출력. 

중복되지 않은 난수만 허용. 난수 허용 범위는 1~100. 배열 이용. 자바스크립트 이용.


실행 예)

난수 갯수(2~20) [5   ] [결과]


난수 결과 : 55 9 12 6 90 

가장 큰 값 : 90

가장 작은 값 : 6


//Script33.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<style type="text/css">


.style01

{

width: 40px;

}


</style>

<script type="text/javascript">

function myFunc() {

var msg = "난수 결과 : ";

var str = "";

var temp = document.getElementById("data");

var number = parseInt(temp.value);

for (var a=0; a<number ; a++) {

str += (parseInt(Math.random()*100)+1) + " ";

}

var arr = new Array();

arr = str.split(" ");

var max = arr[0];

var min = arr[0];

for (var a=1; a<arr.length; a++) {

if (max < parseInt(arr[a])) {

max = arr[a];

}

if (min > parseInt(arr[a])) {

min = arr[a];

}

}

msg += str + "<br>가장 큰 값 : " + max + "<br>가장 작은 값 : " + min;

var result = document.getElementById("result");

result.innerHTML = msg;

}

</script>

</head>

<body>

<div>

<h2>난수 발생 테스트2</h2>

<form>

난수 갯수(2~20) <input type="text" id="data" class="style01"> <input type="button" value="입력" onclick="myFunc()" >

</form>

<h3>출력-----------------</h3>

<div id="result"></div>

</div>

</body>

</html>






문제) 가위,바위,보 게임. 

1~3 사이의 난수가 발생하면 가위, 바위, 보라고 생각하고 사용자가 내는 가위, 바위, 보와 비교해서 승패 결정.


사용자 선택 [가위] [바위] [ 보 ]


사용자:가위, 컴퓨터:바위

결과 : 컴퓨터 승!


//Script34.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">

//전역변수

var userCount = 0;

var compCount = 0;

function myFunc(user) {

var comp = parseInt(Math.random()*3) + 1;

var msg = "";


if (user == comp) {

msg = "비겼습니다.";

} else if (user%3 == (comp+1)%3) {

msg = "사용자 승!";

userCount++;

} else {

msg = "컴퓨터 승!";

compCount++;

}

var arr = ["가위", "바위", "보"];

var str = "";

str += "사용자:" + arr[user-1] + ", 컴퓨터:" + arr[comp-1] + "<br>";

str += "결과 : "+ msg +"<br>";

str += "사용자승: " + userCount + "회, 컴퓨터승: " + compCount + "회";

var result = document.getElementById("result");

result.innerHTML = str;

}


</script>

</head>

<body>

<div>

<h2>가위, 바위, 보 게임</h2>

<form>

사용자 선택

<input type="button" value="가위" onclick="myFunc(1)">

<input type="button" value="바위" onclick="myFunc(2)">

<input type="button" value=" 보 " onclick="myFunc(3)">

</form>

<h3>출력 -------------------</h3>

<div id="result"></div>

</div>

</body>

</html>






문제) 로또 번호를 원하는 장수 만큼 출력. 자바스크립트 이용.

로또 번호는 1~45 범위의 숫자를 중복되지 않은 상태에서 6개가 되면 1장에 해당.


실행 예)

로또 장수(1~20) [3  ]  [결과]


번호1 :  1 12 13 34 35 36

번호2 : 12 20 25 30 39 45

번호3 :  1  4  9 20 30 42



//Script35.html










라디오(<input type="radio" name="식별자"> 태그) 객체 다루기



실행 예)

 - 사이즈 선택 -

 o 싱글레귤러(1)

 o 파인트(3)

 o 쿼터(5)


   [확인]



//Script36.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">

function myFunc() {

//NodeList(DOM) 자료형 반환됨 -> 컬렉션.

var radios = document.getElementsByName("size");

var result = 0;

for (var a=0; a<radios.length; a++) {

if (radios[a].checked) {

result = parseInt(radios[a].value);

}

}

var str = "";

switch (result) {

case 0 : str = "선택한 항목이 없습니다."; break;

case 1 : str = "선택한 사이즈는 싱글레귤러이며, 1개의 품목을 선택할 수 있습니다."; break;

case 3 : str = "선택한 사이즈는 파인트이며, 3개의 품목을 선택할 수 있습니다."; break;

case 5 : str = "선택한 사이즈는 쿼터이며, 5개의 품목을 선택할 수 있습니다."; break;

}

var result = document.getElementById("result");

result.innerHTML = str;

}


</script>

</head>

<body>

<div>

<h2>라디오 객체 다루기</h2>

<form>

-사이즈 선택- <br>

<input type="radio" name="size" value="1"> 싱글레귤러(1)<br>

<input type="radio" name="size" value="3"> 파인트(3)<br>

<input type="radio" name="size" value="5"> 쿼터(5)<br>

<input type="button" value="확인" onclick="myFunc()">

</form>

<h3>출력 -----------------</h3>

<div id ="result"></div>

</div>

</body>

</html>





라디오(<input type="radio" name="식별자"> 태그) 객체 다루기2



실행 예)

 - 사이즈 선택 -

 o 싱글레귤러(1)

 o 파인트(3)

 o 쿼터(5)



//Script37.html (확인 버튼 없이 라디오 객체에서 직접 클릭 이벤트 처리)

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>


<script type="text/javascript">

function myFunc(obj) {

var result = 0;

result = parseInt(obj.value);

var str = "";

switch(result) {

case 1: str="선택한 사이즈는 싱글레귤러(1)입니다."; break;

case 3: str="선택한 사이즈는 파인트(3)입니다."; break;

case 5: str="선택한 사이즈는 쿼터(5)입니다."; break;

}

var result = document.getElementById("result");

result.innerHTML = str;

}

</script>


</head>

<body>

<div>

<h2>라디오 객체 다루기2</h2>

<form>

- 사이즈 선택-<br><br>

<input type="radio" name="size" value="1"

onclick="myFunc(this)"> 싱글레귤러(1)<br>

<input type="radio" name="size" value="3"

onclick="myFunc(this)"> 파인트(3)<br>

<input type="radio" name="size" value="5"

onclick="myFunc(this)"> 쿼터(5)<br><br>

<!-- <input type="button" value="확인"

onclick="myFunc()"> -->

</form>

<h3>출력-----------</h3>

<div id="result"></div>

</div>

</body>

</html>






체크박스(<input type="checkbox"> 태그) 객체 다루기



실행 예)

           - 종류 선택 -

 [v]고스트월드      [v]엄마는 외계인

 [ ]바나나몬스터    [ ]초코라떼크런치

 [ ]뉴욕치즈케익    [ ]슈팅스타

              [확인]




//Script38.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">


function myFunc() {

var names = ["고스트월드", "엄마는 외계인", "바나나몬스터", "초코라떼크런치", "뉴욕치즈케익", "슈팅스타"];

var checkboxes = document.getElementsByName("icecream");

var icecream = new Array();

for (var a=0, b=0; a<checkboxes.length; a++) {

if (checkboxes[a].checked) {

icecream[b] = parseInt(checkboxes[a].value);

b++;

}

}

var str = "";

if (icecream.length == 0) {

str = "선택된 항목이 없습니다.";

} else {

str += "선택한 종류는 <br>";

for (var a=0; a<icecream.length; a++) {

str += (a+1) + ". " + names[icecream[a]-1] + "<br>";

}

str += "입니다.<br>";

}

var result = document.getElementById("result");

result.innerHTML = str;

}


</script>

</head>

<body>

<div>

<h2>체크박스 객체 다루기</h2>

<form>

- 종류 선택 -<br>

<input type="checkbox" name="icecream" value="1">고스트월드<br>

<input type="checkbox" name="icecream" value="2">엄마는 외계인<br>

<input type="checkbox" name="icecream" value="3">바나나몬스터<br>

<input type="checkbox" name="icecream" value="4">초코라떼크런치<br>

<input type="checkbox" name="icecream" value="5">뉴욕치즈케익<br>

<input type="checkbox" name="icecream" value="6">슈팅스타<br>

<input type="button" value="확인" onclick="myFunc()">

</form>

<h3> 출력 ----------------</h3>

<div id="result"></div>

</div>

</body>

</html>










문제) 선택 갯수 제한하기. 자바스크립트 이용.

제약조건

1. 사이즈 선택한 갯수를 초과해서 선택할 수 있다.

2. 제한된 갯수를 넘는 경우 '갯수 초과' 메세지 출력

3. 최종적으로 주문 버튼 클릭시는 주문 내역(사이즈, 종류)출력



실행 예)

          - 사이즈 선택 -

            o 싱글레귤러(1)

            o 파인트(3)

            o 쿼터(5)



           - 종류 선택 -

 [v]고스트월드      [v]엄마는 외계인

 [ ]바나나몬스터    [ ]초코라떼크런치

 [ ]뉴욕치즈케익    [ ]슈팅스타

              [확인]





//Script39.html


WRITTEN BY
빨강꼬마

,

만년달력

1. 1년 1월 1일부터 전년도 12월 31일까지의 총 날짜수 구함.
int total = (year-1)*365 + ((year-1)/4 - (year-1)/100 + (year-1)/400);


2. 해당년도 1월 1일부터 해당년도 해당월 1일까지의 총 날짜수 구함.
int[] m = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
for (int a=0; a<month-1; a++) {
total += m[a];
}
//해당월 1일 때문에 +1
total++;
//올해가 윤년이면서 2월 이상인 경우 +1
if (month>=3 && (year%4==0 && year%100!=0 || year%400==0)) {
total++;
}


3. 해당년도 해당월의 첫 날(1일)의 요일(일, 월, 화, 수, 목, 금, 토) 구함.
String[] d = {"일", "월", "화", "수", "목", "금", "토"};
int days = total % 7;
System.out.printf("%s요일 %n", d[days]);


4. 콘솔버전에서 날짜를 달력 형태로 출력.






난수 발생

1. 0 부터 1 사이의 무작위 숫자를 난수라고 함.

2. Random 클래스의 nextInt() 메소드를 이용하면 쉽게 난수를 얻을 수 있다.

import java.util.*;
Random rd = new Random();

int val = rd.nextInt(100); //0 보다 크거나 같고 100 보다는 작은 난수

예를 들어, 로또번호는 1~45까지만 존재. rd.nextInt(45) + 1 라고 계산함.
난수를 여러개 발생시키고, 배열에 저장한 다음, 난수 출력. 1~45 범위의 숫자 6개.






문제) 여러개의 난수를 발생시키고, 난수들 중에서 가장 큰 값과 가장 작은 값을 별도 출력. 난수 허용 범위는 1~100. 배열 이용.
실행 예)
난수 갯수(2~20)?5
난수 결과 : 55 9 12 6 90 
가장 큰 값 : 90
가장 작은 값 : 6






중복되지 않은 난수 얻기 (1~100)_방법1
실행 예)
난수 갯수(2~20)? 5
난수 결과 : 3 4 5 10 12


//중복되는 경우

int size=5;
int count=0;
int[] arr = new int[size];
Random rd = new Random();
while(true) { //무한실행 (특정 갯수의 난수를 얻을때까지 반복)
int random = rd.nextInt(100) + 1;
arr[count] = random;
count++;
if (count == size) {
break;
}
}


//중복되지 않은 경우

int size=5;
int count=0;
int[] arr = new int[size];
Random rd = new Random();

while(true) { //무한실행 (특정 갯수의 난수를 얻을때까지 반복)
int random = 0;
boolean check = false;


do {
check = false;
random = rd.nextInt(100) + 1;
for (int a=0; a<count; a++) {
if (arr[a] == random) {
check = true;
}
}
}while(check);  //무한실행 (중복되지 않는 경우만 배열에 저장)


arr[count] = random;
count++;
if (count == size) {
break;
}
}






중복되지 않은 난수 얻기 (1~100)_방법2
실행 예)
난수 갯수(2~20)? 5
난수 결과 : 3 4 5 10 12






문제) 로또 번호를 원하는 장수 만큼 출력.
로또 번호는 1~45 범위의 숫자를 중복되지 않은 상태에서 6개가 되면 1장에 해당.
실행 예)
로또 장수(1~20)?3
번호1 :  1 12 13 34 35 36
번호2 : 12 20 25 30 39 45
번호3 :  1  4  9 20 30 42






문제) 가위,바위,보 게임. 
1~3 사이의 난수가 발생하면 가위, 바위, 보라고 생각하고 사용자가 내는 가위, 바위, 보와 비교해서 승패 결정.
실행 예)
사용자 선택(1:가위, 2:바위, 3:보, -1:종료)?1
사용자:가위, 컴퓨터:바위
결과 : 컴퓨터 승!

사용자 선택(1:가위, 2:바위, 3:보, -1:종료)?2
사용자:바위, 컴퓨터:바위
결과 : 비겼습니다.

사용자 선택(1:가위, 2:바위, 3:보, -1:종료)?-1
사용자 승:0회, 컴퓨터 승:1회





객체 지향 프로그래밍

-> 프로그램의 대상이 되는 데이터를 객체로 취급하는 프로그램 기법.


클래스 
- 객체에 대한 원본 정의서. 
- 데이터형을 정의하는 코드 작성 필요.
- 사용자가 직접 데이터형에 대한 정의를 추가해야 한다. 
- 멤버변수(상태), 메소드(행위)

예를 들어서, 
int 자료형은 상태값은 있지만 행위는 없다.
Integer 클래스는 상태값만 있는게 아니라 행위도 가능하다.

나무(상태) -> 조각가(클래스) -> 조각(행위) -> 작품(결과)

예를 들어, 프린터 클래스를 만든다면
class 프린터 {
//멤버변수
int 잉크 = 100;
int 종이 = 0;

//메소드
void 인쇄(대상) {
if (잉크>0 && 종이>0) {
//대상 출력
잉크--;
종이--;
} else {
//잉크 또는 종이 부족 메시지 출력
}
}
void 종이공급(매수) {
종이 += 매수;
}
}



클래스 정의 기본 형식

1. 클래스명은 첫 글자는 대문자로 표기

2. class 클래스명 { .... }

3. 저장시 물리적 파일명은 클래스명.java

4. public class 클래스명 {   ..    } 에서 public은 접근지정자. 

외부에서 클래스를 참조할 때 접근 가능한 지역 표시.

5. 멤버변수와 메소드는 사용자 정의.

6. 멤버변수와 메소드도 접근 지정자를 별도 지정. 멤버변수는 private, 메소드 public 주로 사용.


멤버변수 정의 예.  private int a = 0;

메소드 정의 예. public void method() { ...  }




산술연산 담당 클래스 연습
-> Calc
-> 숫자 두 개에 대한 덧셈 결과 리턴
실행 예)
숫자1?10
숫자2?20
입력된 숫자 : 10, 20
결과 : 30





산술연산 담당 클래스2 
-> 기존의 Calc 클래스에 메소드 추가를 이용해서 수정 가능.
-> 임의의 정수 두 개를 받아서 n부터 m까지의 합을 계산해서 출력.
실행 예)
숫자1?1
숫자2?10
입력된 숫자: 1, 10
연산 결과: 55



WRITTEN BY
빨강꼬마

,