주요내용 : 메소드, 반복문(팩토리얼 구하기, while, do ~ while, break) 마무리.
import java.util.Random;
import java.util.Scanner;
//------------------------------------메소드---------------------------------------
//Method(함수 = function) : 자주 반복적으로 특정 작업을 실행하기 위한 명령어들의 집합입니다.
// 명령어 : 연산자, 조건문, 반복문, 배열, 클래스, 오브젝트 등을 말합니다.
//--------------------
// 종류 4가지에 따른 분류기준
//--------------------
// 전달인자값 결과값의리턴
// -------------------
//1. O O : 1번스타일
//2. O X : 2번스타일
//3. X O : 3번스타일
//4. X X : 4번스타일
//--------------------
//메소드는 원형의 정의시에 메소드 선언부, 메소드 정의부, 메소드 호출(실행)부
public class 실습0628 {
//Field Area : 클래스 변수(전역변수; 프로그램 전체에 걸쳐서 영향을 줌), 클래스 메소드, 생성자, 메소드...
/* ---------public static int Adder(int x, int y) 분석-----------
*
* public : 공개적인(열린) : 누구든지(public, protected, private, 생략) 접근할 수 있다.
* static : 공유하는(클래스, 메소드, 변수)
* int : 정수형으로 반환하라.
* Adder : 메소드명
* (int x, int y) : 매개변수 값.
* { : 메소드의 시작
* ....코딩부분....
* } : 메소드의 끝
*
*/
//1번 메소드
public static int Adder(int x, int y) {//1번 메소드 정의부(선언부 포함)
int sum = x + y;
return sum;
}
//2번 메소드
public static void Adder(int x, int y) {//2번 메소드 정의부. void(리턴값이 없다.)
int sum = x + y;
System.out.println("2.style = " + sum); // 메소드에서 바로 출력.
//3번 메소드
public static int Adder() {//3번 메소드 정의부. 전달부분(매개변수) 없다.
int x, y, sum;//
Scanner sc = new Scanner(System.in);
System.out.println("정수형 값으로 두 숫자를 입력 하세요.");
x = sc.nextInt(); //500
y = sc.nextInt(); //300
sum = x + y;
return sum;
}
//4번 메소드
public static void Adder() {//4번 메소드 정의부(선언부 포함), 리턴할필요없으므로 void
int x, y, sum;//
Scanner sc = new Scanner(System.in);
System.out.println("정수형 값으로 두 숫자를 입력 하세요.");
x = sc.nextInt(); //500
y = sc.nextInt(); //300
sum = x + y;
System.out.println("4.style = " + sum);
}
// 프로그램의 시작과 끝.
public static void main(String[] args) {//main 메소드(프로그램 전체에 1개밖에 없음.)
//1번 스타일. 두 수를 입력받아서, 덧셈을 하여 출력합니다.
int x, y;//지역변수, 메인 메소드 안에 들어있음.
Scanner sc = new Scanner(System.in);
System.out.println("정수형 값으로 두 숫자를 입력 하세요.");
x = sc.nextInt(); //500
y = sc.nextInt(); //300
int result = Adder(x, y); //메소드 호출(실행)부, Adder(x,y):x,y => 전달인자값
System.out.println("1.style = " + result);
//2번 스타일. 두 수를 입력받아서, 덧셈을 하여 출력합니다.
int x, y;//지역변수, 메인 메소드 안에 들어있음.
Scanner sc = new Scanner(System.in);
System.out.println("정수형 값으로 두 숫자를 입력 하세요.");
x = sc.nextInt(); //500
y = sc.nextInt(); //300
Adder(x, y); //메소드 호출(실행)부, 결과값 출력부분이 메소드로 옮겨져있음.
//3번 스타일. 두 수를 입력받아서, 덧셈을 하여 출력합니다.
int result = Adder(); //메소드 호출(실행)부,리턴값 없다, 결과값 출력부분이 메소드로 옮겨져있음.
System.out.println("3.style = " + result);
//4번 스타일. 두 수를 입력받아서, 덧셈을 하여 출력합니다.
Adder();
//----------------------------------------반복문------------------------------------
// factorial 구하기(x!) - 입력받아서
int i, sum=1;
Scanner sc = new Scanner(System.in);
System.out.println("팩토리얼 구할 수를 입력하세요.");
int x = sc.nextInt();
for(i=1; i<=x; i++) {
sum*=i;
System.out.println("i= " + i + ", 합계는 = " + sum);
}
// 1+2+3+4+5+6+7+8+9+10=55 출력되도록 코딩합니다. - 별찍기와 같은 원리
for(int i = 1, j= 0; i<=10; i++) {
j+=i;
System.out.print(i); // 연속되는 값 1~10 출력
if(i==10) {
System.out.print("="); // 바뀌는 연산자와 합 계산 부분.
System.out.print(j);//결과값 출력.
}else {
System.out.print("+"); //반복 + 출력.
}
}
//-- while(~하는 동안에, 참인 경우에 반복 실행, 조건식 이용이나 true)
//문제] Hello Java라는 문자열을 5번 반복 출력하세요. - while 문을 사용하여서 출력할것.
String str = "Hello Java";
int i = 1;
while(i<=5) {
System.out.println(str);
i++;
}
//"I like Java Programming~~!!!" 를 5번 출력하세요.
String str = "I like Java Programming~~!!!";
int i = 1;
while(i<=5) {
System.out.println(str);
++i;
}
//문제] -1+3-5+7-9+11-.....+99 = "?" 합계를 구하시오. - while 문 사용.
//나의 풀이
int sum = 0, i = 1, p=-1; //p:부호변환용 기호(+,-) 변수
while(i<=50) {
sum+=(2*i-1) * p;// sum = sum + (i * p);
p*=-1;//p = p * -1; // 부호변환 지점(부분)
i++;
}
System.out.println("부호변환이용 : " + sum); // 50
//강사님 풀이
int sum = 0, i = 1, sw=1; //(true)
while(i<=99) {
sw = sw* -1;
sum = sum + (i*sw);
i+=2;
}
System.out.println("true, false 이용 : " + sum); // 50
//문제] 1~200 사이의 7의 배수의 합과 갯수를 구하여 출력합니다. - while 문 사용.
int sum = 0, i = 7, count = 0;
while(i<=200) {
sum+=i;
count++;
i+=7;
}
System.out.println("1~200 사이의 7의 배수의 합은 : " + sum); // -50
System.out.println("1~200 사이의 7의 배수의 갯수는: " + count); // -50
//문제] 2개의 난수를 발생하여 합이 50이 되면, 프로그램을 중지하고, 아니면 계속 난수가 발생됩니다. - while문 이용.
//Math.random 이용
int num = 0, num2 = 0;
while(num+num2 != 50) {
num = (int)(Math.random()*50); // 50은 최대경우의 수임(0~49)
num2 = (int)(Math.random()*50);
System.out.println(num+num2);
}System.out.println("합이 50이 발생하였으므로, 프로그램을 중지합니다.");
//---- do ~ while : 무조건 실행을 하고, 조건을 나중에 체크하여 거짓이면 종료,
//"I Like Java Programming" 문자열을 5번 출력하세요.
String str = "I Like Java Programming";
int x = 1;
do {
System.out.println(str);
x++;
}while(x<=5);
//1~100사이의 7의 배수의 합과 갯수를 구하여 출력합니다.
int x= 0, sum = 0, count = 0;
do {
x+=7;
sum+=x;
count++;
}while(x<=100);
System.out.println("7의 배수의 합은 = " +sum);
System.out.println("7의 배수의 갯수는 = " +count);
//문제] 두 수를 입력받아서, 큰 값과 작은 값을 구별하여 출력하세요.
Scanner sc = new Scanner(System.in);
System.out.println("두 값을 입력하세요.");
int num1 = sc.nextInt();
int num2 = sc.nextInt();
do {
if(num1 > num2) {
System.out.println("큰 값은 = " + num1 + ", 작은 값은 = " + num2);
break;
} else if(num1 < num2) {
System.out.println("큰 값은 = " + num2 + ", 작은 값은 = " + num1);
break;
} else
System.out.println("두 수의 값은 같습니다.");
break;
}while(true);
//강사님 풀이 - stop 부분에 에러있음....
int xValue, yValue;
String stop = null;
do {
if(stop == "exit") {
System.exit(0);
}
Scanner sc = new Scanner(System.in);
System.out.println("두 값을 입력하세요.");
String num1 = sc.next();
String num2 = sc.next();
int x = Integer.parseInt(num1);
int y = Integer.parseInt(num2);
xValue = x > y ? x : y ; //큰값
yValue = x < y ? x : y ; //작은값
System.out.println("큰 값은 = " + xValue + ", 작은 값은 = " + yValue);
}while(true);
//문제5] 5! 팩토리얼 구하기
int i = 1, sum=1;
do {
sum*=i;
i++;
}while(i<=5);
System.out.println(sum);
//1~100 사이에 3의 배수이면 건너뛰세요. 3의 배수가 아니면, 출력합니다.
int i = 3;
do {
i++;
if(i%3 ==0) {
continue;
}System.out.println(i);
}while(i<100);
//--- break -----
//1~100 사이의 12345 라는 숫자를 5번 반복 출력하고 탈출하세요.
for(int i = 1;i<100;i++) {
for(int j = 1 ; j<=5; j++) {
System.out.print(j);
}
if(i==5) {
break;
}
}
//문제] 1~100 사이의 덧셈의 합 중에 합이 3000에 가장 가까운 수를 구하여 출력합니다.
//나의 풀이 -- 3024가 왜 나오지!!!??
int i, sum;
for(i=0; i<=100;i++) {
for(sum=0;sum<=3000;sum+=i) {
i++;
}System.out.println(sum);
}
//강사님 풀이
int i, sum = 0, irobot = 0;
for(i=0; i<=100;i++) {
sum+=i;
if(sum>=3000) {
irobot = i;
break;
}
}
System.out.println(irobot); // 77
System.out.println(sum); //3003
//문제] 5의 배수와 7의 배수가 되는 첫번째 숫자를 구하여 출력하세요.
//방법1 - for문
int i;
for(i=1;true;i++) {
if(i%5==0 && i%7==0) {
break;
}
}
System.out.println(i); // 35
//방법2 - while, break 사용
int i = 0;
while(true) {
i++;
if(i%5==0 && i%7==0) {
break;
}
}
System.out.println(i); // 35
}
}
'Bitcamp > BITCAMP - Java' 카테고리의 다른 글
5일차 - 메소드 연습 (0) | 2019.06.28 |
---|---|
5일차 - 과제 (0) | 2019.06.28 |
4일차 - 과제 (0) | 2019.06.27 |
4일차 (0) | 2019.06.27 |
3일차 - 과제 (0) | 2019.06.26 |