논스태틱 -> 객체를 생성
반환값 String에는 return을 주어야함
String 문자 출력
Calculator calc = new Calculator(); 이거는 같은클래스면 한번만 사용해도 됨
문제 깃랩
Calculator
package com.greedy.level01.basic;
public class Calculator {
// 반환값 : x
// 메소드명 : checkMethod
// 호출하면 "메소드 호출 확인"을 출력하는 기능의 메소드
public void checkMethod() {
System.out.println("메소드 호출 확인");
}
// 반환값 : String
// 메소드명 : sumTwoNumber
// 두개의 전달인자를 받아 두수의 합을 반환
// 출력의 내용은 "10과 20의 합은 30입니다." 라는 문장을
// 출력하는 기능
public String sumTwoNumber(int first , int second) {
String result = first + "과" + second + "의 합은" + (first + second) + " 입니다.";
return result;
}
// 반환값 : String
// 메소드명 : multiTwoNumber
// 두개의 전달인자를 받아 두수의 곱을 반환
// 출력의 내용은 "10과 20의 곱은 200입니다." 라는 문장을
// 출력하는 기능
public String multiTwoNumber(int first , int second) {
String result1 = first + "과 " + second + "의 곱은 " + (first * second) + "입니다.";
return result1;
}
}
applicaiton1
package com.greedy.level01.basic;
public class Application1 {
/* 실행용 메소드 */
public static void main(String[] args) {
// Calculator 클래스의 메소드를 호출 해서 실행
/*non-static 메소드 실행*/
Calculator calc = new Calculator();
calc.checkMethod();
int first = 10;
int second = 20;
String result = calc.sumTwoNumber(first, second);
System.out.println(result);
// System.out.println(calc.sumTwoNumber(10, 20)); 이걸로 한번에 가능
String result1 = calc.multiTwoNumber(first, second);
System.out.println(result1);
}
}
-> 메소드 호출 확인
10과20의 합은30 입니다.
10과 20의 곱은 200입니다.
RandomMaker
package com.greedy.level01.normal;
import java.util.Random;
public class RandomMaker {
/*
* static 메소드로 생성
* 반환형 : String
* 메소드명 : rockPaperScissors
*
* 가위,바위,보 중에 하나를 출력
* (가위,바위,보 는 난수를 이용하여 구현)
*
* -- 출력 --
* 가위
* */
public static String rockPaperScissors() {
int random = (int)(Math.random() * 3); // 012로 할경우
//int random = new Random().nextInt(3); 으로 사용도 가능
System.out.println("random : " + random);
String result = (random == 0)? "가위" : (random == 1)? "바위" : "보";
return result;
}
/*
* static 메소드로 생성
* 반환형 : String
* 메소드명 : tossCoin
*
* 동전 앞/뒤 중에 하나를 출력
* (앞면,뒷면은 난수를 이용하여 구현)
*
* -- 출력 --
* 앞면
*
* */
public static String tossCoin() {
int random = new Random().nextInt(2);
System.out.println("random : " + random);
String result = (random == 0)? "앞면" : "뒷면";
return result;
}
}
application 1
package com.greedy.level01.normal;
public class Application1 {
/* 실행용 메소드 */
public static void main(String[] args) {
/* RamdomMaker 클래스의 메소드를 호출해서 실행 */
/*static 메소드
* 클래스명. 메소드명();
* */
System.out.println(RandomMaker.rockPaperScissors());
System.out.println(RandomMaker.tossCoin());
}
}
-> random : 1
바위
random : 0
앞면
가위바위보 아무기준으로 순서와 숫자를 정하면 됨 123 이런식으로 012
import static com.greedy.level01.normal.RandomMaker.tossCoin;
System.out.println(tossCoin()); // import 사용시 syso에 랜던메이커를 안넣어도 됨
application1
package com.greedy.level01.normal;
public class Application1 {
/* 실행용 메소드 */
public static void main(String[] args) {
/* RamdomMaker 클래스의 메소드를 호출해서 실행 */
/*static 메소드
* 클래스명. 메소드명();
* */
System.out.println(RandomMaker.rockPaperScissors());
System.out.println(RandomMaker.tossCoin());
}
}
-> random : 1
바위
random : 0
앞면
구글 java api 11 검색
java base java util scanner
com.greedy.section03.api.scanner pacakage
application 1
밑에 빨간색 사각형 불이 들어오면 실행이 되었다는 뜻
package com.greedy.section03.api.scanner;
import java.util.Scanner;
public class Application1 {
public static void main(String[] args) {
/*java.util.Scanner를 이용한 다양한 자료형 값 입력 받기*/
/*1. Scanner 객체 생성*/
// java.util.Scanner sc = new java.util.Scanner(java.lang.System.in);
/*java.lnag은 패키지이름을 생략가능하다.*/
// java.util.Scanner sc = new java.util.Scanner(System.in);
/*import 구문으로 다른 패키지에 있는 클래스 사용시 패키지명을 생략할 수 있다*/
/* Ctrl + Shift + o*/
Scanner sc = new Scanner(System.in);
/*2. 자료형별 값 입력받기*/
/* nextLine() : 입력받은 값을 문자열로 반환해준다.*/
System.out.print("이름을 입력하세요 : ");
String name = sc.nextLine();
System.out.println("입력하신 이름은 " + name + " 입니다.");
/*nextInt() : 입력받은 값을 int형으로 반환해준다.
*
* int 범위를 초과한 값을 입력받게 되면 InputMismatchException이 발생한다.
* */
System.out.print("나이를 입력하세요 : ");
int age = sc.nextInt();
System.out.println("입력하신 나이는 : " + age + "입니다.");
/*nextLong() : 입력받은 값을 long형으로 반환*/
System.out.print("금액을 입력해주세요 : ");
long money = sc.nextLong();
System.out.println("입력하신 금액은 " + money + "원 입니다.");
/*nextFloat() : 입력받은 값을 float 형으로 반환한다.*/
System.out.print("키를 입력하세요 :");
float height = sc.nextFloat();
System.out.println("입력하신 키는 " + height + "cm 입니다.");
/*nextDouble() : 입력받은 값을 double형으로 반환한다*/
System.out.print("원하는 실수를 입력하세요 : ");
double number = sc.nextDouble();
System.out.println("입력하신 실수는 " + number + " 입니다.");
/*nextBoolean() : 입력받은 값은 boolean형으로 반환한다.
* true of false만 가질수 있다.
* */
System.out.print("참과 거짓 중에 한가지를 true or false로 입력해주세요 : ");
boolean isTrue = sc.nextBoolean();
System.out.println("입력하신 논리값은 " + isTrue + "입니다.");
sc.nextLine(); // 이건 뒤에서 추가설명
/*문자 입력받기*/
System.out.print("아무 문자나 입력 해주세요 : ");
char ch = sc.nextLine().charAt(0);
System.out.println("입력하신 문자는" + ch + "입니다.");
// hello문자열-> 0번째 index : h
// 1번째 index : e
// 2번째 index : l
// 3번째 index : l
// 4번째 index : o
/*java.lang.String에 charAt(int index)를 사용
* index를 정수형으로 입력하면 해당문자열에서 지정한 인덱스에 있는 한 문자를 문자형으로 반환
* 해주는 기능
* */
sc.close();
}
}
이름을 입력하세요 : 민
입력하신 이름은 민 입니다.
나이를 입력하세요 : 24
입력하신 나이는 : 24입니다.
금액을 입력해주세요 : 100
입력하신 금액은 100원 입니다.
키를 입력하세요 : 176
입력하신 키는 176.0cm 입니다.
원하는 실수를 입력하세요 : 1.245
입력하신 실수는 1.245 입니다.
참과 거짓 중에 한가지를 true or false로 입력해주세요 : true
입력하신 논리값은 true입니다.
아무 문자나 입력 해주세요 : love
입력하신 문자는l입니다.
application2
package com.greedy.section03.api.scanner;
import java.util.Scanner;
public class Application2 {
public static void main(String[] args) {
/*Scanner의 nextLine()와 next()
* nextLine() : 공백을 포함한 한 줄을 입력을 위한 개행문자(\n, enter키) 전까지 읽어서 문자열로 반환한다.
* (공백문자 포함)
* next() : 공백문자나 개행문자 전까지를 읽어서 문자열로 반환한다.(공백문자 포함하지 않는다)
* */
Scanner sc = new Scanner(System.in);
/*,nextLine()*/
System.out.print("인사말을 입력하세요 : ");
String greeting1 = sc.nextLine(); // 안녕하세요 반갑습니다
System.out.println(greeting1);
/*next()*/
System.out.print("인사말을 입력하세요 : "); // 안녕하세요 반갑습니다
String greeting2 = sc.next();
System.out.println(greeting2);
String greeting3 = sc.next();
System.out.println(greeting3);
}
}
->인사말을 입력하세요 : 안녕하세요 반갑습니다
안녕하세요 반갑습니다
인사말을 입력하세요 : 안녕하세요 반갑습니다
안녕하세요
반갑습니다
application3
line 은 한줄라인 전체를 들고와서 가져온다
package com.greedy.section03.api.scanner;
import java.util.Scanner;
public class Application3 {
public static void main(String[] args) {
/*스캐너의 주의 사항
*
* 스캐너의 next 메소드들은 입력한 내용을 버퍼로부터 토큰 단위로 분리해서 읽어온다.
* 그래서 크게 두 가지 사항을 주의해야 한다.
* 1. next()로 문자열 입력 받은 후 정수(nextInt()),
* 실수(nextDouble()...), 논리값(nextBoolean()) 입력받을 때
* */
Scanner sc = new Scanner(System.in);
System.out.print("문자열을 입력해주세요 :");
String str1 = sc.nextLine();
System.out.println("str1 : " + str1);
// sc.nextline(); 위에 next로 썼을 경우 아래에 nextLine을 써주어도 됨
System.out.print("숫자를 입력해주세요 : ");
int num1 = sc.nextInt();
System.out.println("num1 : " + num1);
System.out.print("다시 숫자를 입력해주세요:");
int num2 = sc.nextInt();
System.out.println("num2 : " + num2);
System.out.print("공백이 있는 문자열을 하나 입력해주세요 : ");
sc.nextLine();
String str2 = sc.nextLine();
System.out.println("str2 : " + str2);
}
}
->문자열을 입력해주세요 : 안녕하세요 반갑습니다
str1 : 안녕하세요 반갑습니다
숫자를 입력해주세요 : 25
num1 : 25
다시 숫자를 입력해주세요:5
num2 : 5
공백이 있는 문자열을 하나 입력해주세요 : ㅇㄹ ㅇ ]
str2 : ㅇㄹ ㅇ ]
제어문
projcet chap04-control-flow-statement-lecture-source
(언더바는 별로 좋지 않다)
package com.greedy.section01.conditional_statement
class application1 (실행형)
A_if ( 기능형)
브레이스는 시작점과 같은 라인으로 맞추어라
코드는 4칸 들여쓰기를 한다
package com.greedy.section01.conditional_statement;
import java.util.Scanner;
public class A_if {
//메소드 주석 생성 단축키 : alt + shift + j
/**
* <pre>
* 단독 if문 실행 흐름을 확인하기 위한 용도의 기능을 제공
* 정수 짝수여부 판단 확인용
* </pre>
*/
public void testSimpleIfStatment() {
/*[if문 표현식]
* if(조건식) {
* 조건식이 true일때 실행할 명령문;
* }
*
* 조건식 : true or false가 나오는 연산식을 조건식이라고 한다.
*
* if문은 조건식의 결과값이 참(true)이며 { } 안에 코드를 실행하고,
* 조건식의 결과 값이 거짓(false)이면 {} 안에 있는 코드를 무시하고 넘어간다.
* */
/*조건을 만족하는 경우에만 추가적인 명령을 실행하고자 할 때 주로 사용*/
/* 정수 한 개를 입력 받아 그 수가 짝수이면 "입력하신 숫자는 짝수입니다."
* 라고 출력하고, 짝수가 아니면 출력하지 않는 구문을 작성해보자
*
* 단, 조건과 상관없이 프로그램이 종료될 때 "프로그램을 종료합니다"라고 출력되도록 한다.
* */
Scanner sc = new Scanner(System.in);
System.out.println("숫자 한 개를 입력하세요 : ");
int num = sc.nextInt();
if(num % 2 == 0) { // 어떤수를 2로 나누었을 때 나머지가 0이면 짝수이다.
System.out.println("입력하신 숫자는 짝수입니다.");
}
System.out.println("프로그램을 종료합니다.");
sc.close();
}
/**
* <pre>
* 중첩 if 구문 흐름을 확인하기 위한 용도의 메소드
* 양의 정수 짝수인지 여부 판단 확인용
* </pre>
*/
public void testNestedIfStatement() {
/* 중첩된 if문 실행 흐름 확인
* if문 안에서 또 다른 조건을 사용하여 if문을 사용할 수 있다.
* */
/* 정수 한 개를 입력 받아 그 수가 양수인 경우에만 짝수인지를 확인하여
* 짝수이면 "입력하신 숫자는 양수이면서 짝수입니다."라고 출력하고,
* 둘 중 하나라도 해당하지 않으면 아무 내용도 출력하지 않는 구문을 작성해보자.
* 단, 조건과 상관없이 프로그램이 종료될 때 "프로그램을 종료합니다"라고 출력되도록 한다.
* */
/*정수 한개를 입력받아*/
Scanner sc = new Scanner(System.in);
System.out.println("숫자를 한 개 입력하세요 : ");
int num = sc.nextInt();
/* 그 수가 양수인지 확인*/
if(num > 0) {
/*양수이면 짝수인지 확인*/
if(num % 2 == 0 ) {
System.out.println("입력하신 숫자는 양수이면서 짝수입니다.");
}
}
System.out.println("프로그램을 종료합니다.");
}
}
package com.greedy.section01.conditional_statement;
public class Application1 {
public static void main(String[] args) {
A_if a = new A_if();
a.testSimpleIfStatment();
B_ifElse b = new B_ifElse();
b.testSimpleIfElseStatment();
C_ifElse c = new C_ifElse();
//c.testSimpleIfElsement();
c.testNestedIfElseStatment();
D_switch d = new D_switch();
// d.testSimpleSwitchStatement();
d.testSwitchVendingMachine();
}
}
숫자 한 개를 입력하세요 :
2
입력하신 숫자는 짝수입니다.
프로그램을 종료합니다.
close는 열려있는 모든통로를 다 닫음
class B_ifElse
package com.greedy.section01.conditional_statement;
import java.util.Scanner;
public class B_ifElse {
/**
* <pre>
* 단독 if-else 구문 흐름을 확인하기 위한 용도의 메소드.
* 정수 홀수 짝수 판별용 기능 제공용
* </pre>
*/
public void testSimpleIfElseStatment() {
/*
* [if-else문 표현식]
* if(조건식) {
* 조건식이 true일 때 실행할 명령문;
* } else {
* 조건식이 false일 때 실행할 명령문;
* }
* */
/*
* if문은 조건식의 결과 값이 참(true)이며 if {}안에 있는 코드를 실행하고,
* 조건식의 결과 값이 거짓(false)이면 else {} 안에 있는 코드를 실행한다.
* */
/*조건을 만족하는지 여부에 따라 둘 중 하나는 무조건 실행해야 하는 경우 많이 사용된다.*/
/*정수 한개를 입력 받아 그 수가 홀수 이면 "입력하신 숫자는 홀수입니다" 라고 출력하고
* 홀수가 아니면 "입력하신 숫자는 짝수입니다"라고 출력하는 프로그램을 작성해보자
* 단, 조건과 상관없이 프로그램이 종료될 때 "프로그램을 종료합니다" 라고 출력되도록 한다.
*
* */
Scanner sc = new Scanner(System.in);
System.out.println("정수를 하나 입력하세요 :");
int num = sc.nextInt();
if(num % 2 !=0) {
System.out.println("입력하신 정수는 홀수입니다.");
} else {
System.out.println("입력하신 정수는 짝수입니다.")
;
}
System.out.println("프로그램을 종료합니다");
sc.close();
}
/**
* <pre>
* 중첩 if-else 구문 흐름을 확인하기 위한 용도의 메소드
* 정수 양수 or 음수 or 0 중 한 가지 인지 판별용 기능 제공
* </pre>
*/
public void testNestedIfElseStatment() {
/* 숫자를 하나 입력받아 양수이면 "입력하신 숫자는 양수입니다"라고 출력하고,
* 음수이면 "입력하신 숫자는 음수입니다" 출력
* 단, 0이면 "0입니다"라고 출력하세요.
* 조건과 상관없이 프로그램이 종료될 때 "프로그램을 종료합니다" 라고 출력되도록 한다.
* */
Scanner sc = new Scanner(System.in);
System.out.println("정수를 하나 입력하세요 : ");
int num = sc.nextInt();
if(num != 0 ) {
//0이 아닌 수 (양수, 음수)
if(num > 0) {
System.out.println("입력하신 숫자는 양수입니다.");
} else {
System.out.println("입력하신 숫자는 음수입니다.");
}
} else {
//0일때
System.out.println("입력하신 숫자는 0 입니다.");
}
System.out.println("프로그램을 종료합니다.");
sc. close();
}
}
C-ifElse
단일 if문 if문 마다 다 체크
if-else-if 성립되는 구간 있으면 그이후부터는 체크 안함
조건문 위에 변수를 쓴 이유는 범위 때문에 지역변수!
com.greedy.section01.conditional_statement;
import java.util.Scanner;
public class C_ifElse {
/**
* <pre>
* 단독 if-else-if문 실행흐름 확인하기 위한 용도의 기능을 제공
* </pre>
*/
/**
*
*/
/**
*
*/
/**
*
*/
/**
*
*/
public void testSimpleIfElsement() {
/*
* [if-else-if문 표현식]
* if(조건식1) {
* 조건식1이 true일 때 실행할 명령문;
* } else if(조건식2) {
* 조건식1이 false이고 조건식2가 true일 때 실행할 명령문;
* } else {
* 위의 조건 2개 모두 거짓(false)인경우 실행할 명령문;
* }
*
* 마지막 else 구문은 생략이 가능
* */
/*여러 개의 조건을 제시하여 그 중 한가지를 반드시 실행시키고 싶은 경우 사용한다.*/
System.out.println("산 속에서 나무를 하던 나무꾼이 연못에 도끼를 빠드리고 말았다.");
System.out.println("연못에서 산신령이 나타나 금도끼, 은도끼, 쇠도끼를 들고 나타났다.");
System.out.println("나무꾼에게 셋 중 어떤 도끼가 나무꾼의 도끼인지 물어보았다. ");
System.out.print("어느 도끼가 너의 도끼이니? (1. 금도끼, 2. 은도끼, 3.쇠도끼) : ");
Scanner sc = new Scanner(System.in);
int answer = sc.nextInt();
if(answer == 1) {
System.out.println("이런 거짓말 쟁이! 너에게는 아무런 도끼도 줄 수 없구나!!!!");
} else if(answer == 2) {
System.out.println("욕심이 과하지는 않지만 그래도 넌 거짓말을 하고 있구나!!! 어서 썩 꺼지거라");
} else {
System.out.println("오호~ 정직하구나 여기있는 금도끼, 은도끼, 쇠도끼를 다 가져가거라!!");
}
System.out.println("그렇게 산신령은 다시 연못 속으로 사라지고 말았다......");
sc.close();
}
/**
* <pre>
* 중첩 if-else-if 구문 흐름을 확인하기 위한 용도의 기능을 제공
* </pre>
*/
public void testNestedIfElseStatment() {
/*
* greedy 대학교의 유xx교수님은 학생들 시험 성적을 수기로 계산해서 학점 등급을 매기는 채점방식을
* 사용하고 있었다.
* 90점 이상이면 'A', 80점 이상이면 'B', 70점 이상이면 'C', 60 점 이상이면 'D'를
* 60점 미만인 경우에는 'F'를 학점 등급으로 하는 기준이다.
* 추가로 각 등급의 중간점수 (95,85,75..)인 경우 '+'를 붙여서 등급을 세분화하다보니 신경쓸게
* 이만 저만이 아니다.
* 그래서 학생의 이름과 점수를 입력하면 자동으로 학점 등급이 계산되는 프로그램을 만들기로 했다.
* */
/* 학생의 이름과 점수 입력*/
/*
* 이상 >=
* 이하 <=
* 초과>
* 미만<
* */
Scanner sc = new Scanner(System.in);
System.out.println("학생의 이름을 입력하세요 : ");
String name = sc.nextLine();
System.out.println("학생의 점수를 입력하세요 : ");
int point = sc.nextInt();
String grade = ""; // 학생의 등급을 저장하기 위한 변수 선언및초기화
if(point >= 90) {
grade = "A";
if(point >= 95) {
grade += "+"; // grade = grade + "+";
}
} else if(point >= 80) {
grade = "B";
if(point >= 85) {
grade += "+";
}
} else if(point >= 70) {
grade = "C";
if(point >= 75) {
grade += "+";
}
} else if(point >= 60) {
grade = "D";
if(point >= 65) {
grade += "+";
}
} else {
System.out.println("F");
}
System.out.println(name + " 학생의 점수는 " + point + "이고, 등급은 " + grade + "입니다.");
System.out.println("프로그램을 종료합니다.");
sc.close();
}
}
]학생의 이름을 입력하세요 :
ㅇㄹㅇ
학생의 점수를 입력하세요 :
95
ㅇㄹㅇ 학생의 점수는 95이고, 등급은 A+입니다.
프로그램을 종료합니다.
class D_switch
swtich 구문에서 break가 없으면 정해져있는 값으로 다이렉트로 찾아간뒤 그뒤까지 모두 출력됨
package com.greedy.section01.conditional_statement;
import java.util.Scanner;
public class D_switch {
public void testSimpleSwitchStatement() {
/*[switch문 표현식]
* switch(비교할변수){
* case 비교값1 : 비교값1과 일치하는 경우 실행할 구문; break;
* case 비교값2 : 비교값2과 일치하는 경우 실행할 구문; break;
* default : case에 모두 해당하지 않는 경우 실행할 구문; break;
* }
*
* 여러 개의 비교값 중 일치하는 조건에 해당하는 로직을 실행하는 것은 if-else-if와 유사하다.
* 따라서 일부 호환이 가능하다.
* 하지만, switch문으로 비교 가능한 값은 정수, 문자, 문자열 형태의 값이다.
* 실수와 논리는 비교할 수 없다.
*
* 또한 정확하게 일치하는 경우만 비교할 수 있으며 대소비교를 할 수 없다는게 차이점이다.
* case절에는 변수를 사용하지 못한다. ( 값만 비교가능)
* 또한 문자열 비교는 jdk 1.7이상부터 가능하다.
* */
/*정수 두개와 연산 기호문자를 입력 받아서 두 숫자의 연산결과를 출력해보는 간단한 계산기를 만들기*/
Scanner sc = new Scanner(System.in);
System.out.print("첫 번째 정수 입력 :");
int first = sc.nextInt();
System.out.print(" 두 번째 정수 입력 : ");
int second = sc.nextInt();
System.out.print("연산 기호 입력 (+, -, *, /, %) : ");
char op = sc.next().charAt(0); // '+'
//String op = sc.nextLine(); //"+"
/*연산의 결과를 저장할 변수*/
int result = 0;
switch(op) {
case'+':
result = first + second;
// System.out.println(first + " " + op + " " + second + " = " + (first + second));
break;
case'-' :
result = first - second;
break;
case'' :
result = first second;
break;
case'/' :
result = first / second;
break;
case'%' :
result = first % second;
break;
/default는 생략 가능하지만 생략하는 경우 주석으로 생략 이유를 간략하게 작성해주는 것이 좋다./
}
System.out.println(first + " " + op + " " + second + " = " + result);
sc.close();
}
/**
* <pre>
* switch문으로 문자열 값 비교 테스트 및 break 테스트
* </pre>
*/
public void testSwitchVendingMachine() {
System.out.println("======== greedy vending machine =========");
System.out.println(" 사이다 콜라 환타 바카스 핫식스");
System.out.println("=======================");
System.out.print("음료를 선택해주세요 : ");
Scanner sc = new Scanner(System.in);
String selectedDrink = sc.nextLine();
/*원하는 음료에 맞는 가격을 저장할 변수*/
int price = 0;
switch(selectedDrink) {
case "사이다":
System.out.println("사이다를 선택하셨습니다.");
price = 500;
break;
case "콜라":
System.out.println("콜라를 선택하셨습니다.");
price = 600;
break;
case "환타":
System.out.println("환타를 선택하셨습니다.");
price = 700;
break;
case "바카스":
System.out.println("바카스를 선택하셨습니다.");
price = 2000;
break;
case "핫식스":
System.out.println("핫식스를 선택하셨습니다.");
price = 10000;
break;
}
System.out.println(price + "원을 투입해주세요!");
}
}
->======== greedy vending machine =========
음료를 선택해주세요 : 환타
환타를 선택하셨습니다.
700원을 투입해주세요!
테스트