-
(국비교육) 5 - 메소드 호출 + if, for 문 + 별찍기 + 10진법 2진법 나타내기개발/국비교육 2023. 6. 7. 21:30
■ 입력한 숫자 2진법으로 나타내기
Scanner 에서 사용되는 sc는 사용하고 객체를 닫아줘야 한다.
따라서 sc.close(); 를 통해 객체를 닫아준다.
■ 메소드 호출 순서
Q) 메소드 속에 메소드가 들어갈까요?
A) No, 호출은 가능
위에 "저는 ppp메소드 입니다." 가 출력되지 않는 이유는 메인 메소드가 먼저 실행되고" } " 로 나가지기 때문이다.
먼저 자바랑 클래스명이 같은 메인 메소드를 찾으면 해당 코드가 먼저 실행된다.
여기서 print() 메소드 실행하고, print 메소드가 ppp 메소드를 호출하여 실행시켜
"저는 ppp메소드 입니다." 가 출력된다.
R타입의 경우 new 를 붙여 생성해야 하고 이를 인스턴스 만든다고 한다.
■ 클래스 생성 / 불러오기 / 메소드 실행
* 클래스 생성
class AppleKorea {
public void apple() {
System.out.println("사과입니다.");
}
}먼저 클래스 AppleKorea 를 생성해준다.
아래 apple() 메소드도 만들어준다.
* 클래스 불러오기
AppleKorea appleKorea = new AppleKorea();
데이터 타입
해당 클래스가 실행되기 위해서는 메인 메소드에서 AppleKorea 클래스를 불러오면 된다.
클래스를 불러오기 위해 appleKorea 변수를 생성해준다.
해당 변수는 R 타입으로 new를 통해 인스턴스를 만들어야 한다.
데이터 타입은 AppleKorea 가 된다.
* 메소드 실행하기
appleKorea.apple();
appleKorea 변수를 통해 apple() 메소드까지 실행해준다.
■ if 조건식
if 는 () 안에 조건식을 입력하고 참일 경우 {} 안의 실행문을 실행한다
만약 이외의 것도 출력하길 원한다면 else를 사용하면 된다.
해당 문제에서는 &&(논리곱)을 통해 둘 다 참일 경우 참이다.
따라서 number < 5 가 거짓이므로 "거짓일때 실행합니다." 가 출력된다.
■ 주민등록번호 출력 예
주민등록번호 뒷자리를 입력받기 위해서 먼저 Scanner 를 사용한다.
사용자가 입력을 하면, 짝수는 "여자입니다." 홀수는 "남자입니다." 가 출력될 수 있도록 설정해야 한다.
입력된 값의 나머지가 0 일 경우 짝수이므로 "여자입니다." 가 출력될 수 있도록 설정하고,
그 외는 남자가 나올 수 있도록 설정한다.
조건 실행문이 완료되면 Scanner 에서 사용되는 sc는 사용하고 닫아준다.
■ 점수 등급별 출력하기
사용자가 입력한 점수를 통해 구간별 점수가 나오기 위해서는 구간 설정이 필요하다.
먼저 90 이상일 경우는 A로 설정해준다.
B의 경우 구간이 89 ~ 80 이므로 80보다 크면 되기 때문에 79 초과로 설정하고
C의 경우 구간이 79 ~ 70 이므로 70보다 크면 되기 때문에 69 초과로 설정한다.
이 외의 모든 구간이 F 이므로 else 값으로 설정해주면 된다.
■ 아이디 비밀번호 입력하여 일치 여부 출력하기
맞게 코딩해도 "정보가 일치하지 않는다." 라고 출력된다.
왜냐하면 " == " 은 P타입일 때는 같다를 의미하고 R타입에서는 그렇지 않다.
왜냐면 R 타입에서는 메모리에서 객체를 참고하고 있는 위치가 같은지 아닌지를 판단하기 때문이다.
따라서 입력을 받고 난 후의 inputID 와 inputPW 는 id 와 pw 와 다른 객체를 참고하고 있기 때문에 일치하지 않는다.
이를 맞게 바꿔주려면 id.equals(inputID) 를 통해 id 와 inputID 가 같은지 아닌지 판별해주고,
마찬가지로 pw 도 동일하게 만들고 둘 다 참이여야 참 논리곱(&&) 로 엮어주면 된다.
■ String 특이성
String 클래스는 특이하게 같은 값이 있으면 동일한 값을 저장합니다.
만약 str 이 이미 admin 이 있는데 str2 admin 이라면 둘의 값은 같다고 나옵니다.
왜냐하면 참조타입에서는 값 비교가 아니라 객체를 비교하는 것이기 때문입니다.
String str = new String("admin");
String str2 = new String("admin");그러나 위 코드와 같이 new 로 인스턴스로 저장하게 되면 str 과 str2 가 같지 않다고 나옵니다.
왜냐하면 new 로 코드를 짜게 되면 메모리에서 새로운 객체를 만들게 되는데
그렇게 되면 str 과 str2 객체가 있는 위치가 서로 다르기 때문입니다.
https://shanepark.tistory.com/330
■ 1에서부터 10까지 더해보기 (for문)
먼저 1부터 10까지 반복될 수 있도록 해준다.
for 조건문을 적어주면 된다.
그런데 우리가 원하는 것은 1부터 10까지의 합이다.
이를 위해서는 합을 구하는 변수를 sum 을 선언해준다.
다만 sum 을 for 구문 안에다 선언하게 되면, for 문이 끝나면 sum 이라는 변수를 사용하지 못하기 때문에
for 문 밖에서 sum 변수를 선언하고 초기화 해준다.
sum 의 값은 데이터 스코프의 따라 for 구문에서도 사용 가능하고
sum 값에서 i 값을 더한 값을 다시 대입하는 += 을 사용해준다.
마지막으로 반복 for 문이 조건에 맞지 않으면 탈출하게 되고,
최종적으로 10까지만 반복돼 합해진 sum 값이 출력하게 된다.
* 짝수만 더하는 방법은?
if 구문과 %(모듈러) 를 이용해 나머지가 0 인 값(짝수)만 더하게끔 설정해주면 된다.
혹은 i = 0 으로 초기값을 설정한 후, i 의 증감을 2개씩 되도록 설정해 짝수만 더하게끔 설정하는 방법도 있다.
■ 10진법 입력받아서 2진법으로 출력하기
10진법을 2진법으로 나타내는 방법은 원하는 숫자를 2로 나눈 나머지값을 쭉 나열한 값이다.
따라서 num 값 10 을 2진법으로 나타내기 위해서는 num 의 나머지값을 출력해줘야 한다.
이후 나눈 값의 몫이 2로 나눠져야 함으로 num 에 num 의 몫을 구하는 값을 다시 대입해준다.
이를 반복하면 아래와 같이 나오는데 원래대로라면 1010 이 나와야 한다.
하지만 해당 식은 나머지값을 뒤에서부터 저장하는 방식이기 때문에
거꾸로 읽어주면 1010 이 나옴을 확인할 수 있다.
■ 3과 5의 배수로 Fizz Buzz 나타내기
3의 배수는 fizz, 5의 배수는 buzz, 3과 5의 배수는 fizzBuzz 로 표현하기 위해서는
먼저 3과 5의 공배수가 참인 값이 fizzBuzz 로 출력되게 만들어준다.
해당 코드가 먼저 처리가 돼야 하기 때문에 가장 상단에 위치해준다.
이후 3의 배수 5의 배수를 구할 수 있는 값을 각각 else if 조건문에 넣어줘 설정한다.
각 문장간의 간격을 위해 ", " if 조건이 끝나는 바깥에 설정하여 반복하면 깔끔하게 출력된다.
■ 별찍기 응용
* 위에서 차례로 쌓기
> 혼자코딩 실습
* 역순으로 찍기
> 혼자 코딩실습
* 칸에 맞춰 늘어나기
> 혼자 코딩실습
* 피라미드로 * 쌓기
> 혼자 코딩실습
https://javanewbie.tistory.com/5
* 보안패드 모양으로 출력하기
> 혼자 코딩실습
* 다이아몬드로 찍기
https://cheershennah.tistory.com/13
※ 단축키
Alt : 코드 순서 변경
※ 참고 사이트
https://comandguide.com/computer-basic/
https://javandroid.tistory.com/1328
[2020년 4회] 정보처리기사 실기 기출문제!! (tistory.com)
https://coding-factory.tistory.com/833
'개발 > 국비교육' 카테고리의 다른 글
(국비교육) 7 - 랜덤 + 2차원 배열 + 로또뽑기 + N자 그리기 + 중복값 제거 (0) 2023.06.09 (국비교육) 6 - 구구단 출력하기 + %활용문 + 배열 (0) 2023.06.08 (국비교육) 4 - 자바 연산자 + 조건문과 반복문 + 2의 배수 만들기 + Fizz Buzz + 논리연산자 + 비트연산자 + 제어문 (0) 2023.06.05 (국비교육) 3 - 변수와 자료형 (0) 2023.06.02 (국비교육) 2 - 자바 기초 (0) 2023.06.01