Study/Academy

[Study #04] IF문, FOR문

PEAZH 2023. 6. 14. 19:18
반응형

 

01. 코드 특징

  • 클래스가 여러개여도 위치 상관없이 파일명과 똑같은 클래스 먼저 실행이 원칙
  • 메인 메소드 먼저 실행이 원칙
  • 메소드 속에 메소드가 들어갈 수 없음 (호출 가능  but 생성 불가능)
  • 메인이 아닌 것들은 호출해야만 출력
  • 호출 순서가 곧 출력 순서
class AppleKorea{//실행안됨
	public void apple() {
		System.out.println("사과입니다.");
	}
}
public class Test02 {
	// 순서는 메인 메소드 -> 그리고 끝 
	public static void ppp() {
		System.out.println("저는 ppp메소드 입니다.");
	}

	public static void print() {
		ppp();// ppp 메소드 호출
	}

	public static void main(String[] args) {//메인 메소드
		String str = "R";
		print();// print 메소드 호출
		
		//AppleKora 클래스 불러오기
		AppleKorea appleKorea = new AppleKorea();
		//메소드 실행하기
		appleKorea.apple();
	}
}

 

02. String의 특징

  • 같은 값이 있으면 동일한 값을 저장
  • 특이하게 변경 불가능한 값을 저장 함
  • String 타입을 많이 쓰게 되면 딜레이 타임 존재
  • 그를 막기 위해서 StringBuffer나 StringBuilder를 많이 씀
  • 메모리에서 계속 자기를 지우면서 위치를 변경
  • 참조 타입(R타입)은 값 비교가 아닌 객체를 비교

[ 활용 ]

String str = new String("admin");
String str2 = new String("admin");
str = "11111";
str = "22222";
str = "admin";//str2를 봄
//참조 타입에서는 값 비교가 아니라 객체 비교
System.out.println(str == str2);//true

 

 

03. FOR문, IF문 예제

 

Q1.  10진법으로 숫자를 입력받고 10진법과 2진법으로 출력하기

package jun07;

import java.util.Scanner; //입력받기 위한 명령어

public class Test01 {
	public static void main(String[] args) {
    	Systems.out.print("숫자를 입력하세요\n입력 : ");
        Scanner sc = new Scanner(System.in);
        
        int input = sc.nextInt(); //사용자가 숫자 입력하고 엔터칠 때까지 입력대기
        
        System.out.println("당신이 입력한 숫자는 " + input +"입니다.");
		System.out.println("2진법으로는 " +Integer.toBinaryString(input) + "입니다.");
		
		sc.close();//객체 닫기 
        }
 }

 

Q2.  IF문 활용하기

public class Test02 {
	public static void main(String[] args) {
		boolean bool = !(1 + 1 == 3);
		int number = 10;
		// if문은 제어문 중의 하나인 조건절
		if (number < 5 && bool) {// if문의 바디 속
			System.out.println("참일 때 실행합니다.");
		} else {
			System.out.println("거짓일 때 실행합니다.");
		} // 탈출
	}
}

 

Q3.  주민등록번호 뒷자리 입력했을 때 남자인지, 여자인지 판별하기

import java.util.Scanner;

public class Test03 {
	public static void main(String[] args) {
    	System.out.print("주민번호 뒷자리 첫 글자를 입력해주세요.\n입력 : " 
        Scanner sc = new Scanner(System.in);
        
        int input = sc.nextInt();
        
        if (input % 2 == 0) {
         System.out.println("당신은 여자입니다.")
         } else {
         System.out.println("당신은 남자입니다.")
         }
         sc.close();
    }
 }

 

Q4.  구간별로 점수를 입력했을 때 성적 출력하기

import java.util.Scanner;

public class Test04 {
	public static void main(String[] args) {
		System.out.println("점수를 입력하세요.");
		// 100 ~ 90 : A
		// 89 ~ 80 : B
		// 79 ~ 70 : C
		// 69 ~ 0 : F

		Scanner sc = new Scanner(System.in);
		int input = sc.nextInt();

		if (input >= 90) {
			System.out.println("A입니다.");
		} else if (input >= 80) {
			System.out.println("B입니다.");
		} else if (input >= 70) {
			System.out.println("C입니다.");
		} else {
			System.out.println("F입니다.");
		}
		sc.close();
	}
}

 

Q5.  아이디/비밀번호 입력했을 때 출력하기

import java.util.Scanner;

public class Test05 {
	public static void main(String[] args) {
		//아이디 = admin, 비밀번호 = 01234567
		String id = "admin";
		String pw = "01234567";
		String inputID, inputPW;
		Scanner sc = new Scanner(System.in);
		
		System.out.print("아이디 입력 : ");
		inputID = sc.nextLine();
		
		System.out.print("암호 입력 : ");
		inputPW = sc.nextLine();
		//p타입 비교일 때 사용하는 == '100 == 100' 정상적으로 동작
		//r타입일 때 ' == ' 로 비교할 수 없음
		//r타입에서 '=='의 의미는 객체가 똑같냐는 의미, 같은 위치에 있냐는 의미(값이 아니라)
		//r타입은 밑에처럼 표현해줘야 함 (값을 비교) - equals (String용법)
		if (id.equals(inputID) && pw.equals(inputPW)) {
			System.out.println("로그인 되었습니다.");
		} else {
			System.out.println("입력 정보를 다시 확인해주세요.");
		}
		sc.close();
	}
}

 

Q6.  1부터 10까지 모든 숫자 더하기

public class Test06 {
	public static void main(String[] args) {
    	int sum = 0; //변수 선언
        for (int i = 1; i <= 10; i++) {
        	sum = sum + i;
        }
        system.out.println(sum);
    }
}

 

Q7.  부터 10까지 짝수만 더하기

public class Test07 {
	public static void main(String[] args) {
    	int sum = 0; //변수 선언
        for (int i = 1; i <= 5; i++) {
        	sum = sum + i*2;
        }
        system.out.println(sum);
    }
}

 

Q8.  10진법 입력받아서 2진법으로 출력하기

public class Test08 {
	public static void main(String[] args) {
		int num = 11;

		for (int i = 0; i < 8; i++) {
			// 1. 2로 나눠서 나머지값을 출력
			System.out.print(num % 2);
			// 2. 2로 나눈 몫을 num에 저장하기
			num = num / 2;

		}
	}
}

 

Q9.  3의 배수일 때 fizz, 5의 배수일 때 buzz, 3과 5 모두 배수일 때는 fizz buzz를 출력하기

public class Test09 {
	public static void main(String[] args) {
		for (int i = 1; i < 31; i++) {
			if (i % 3 == 0 && i % 5 == 0) {
				System.out.print("fizz buzz");
			} else if (i % 3 == 0) {
				System.out.print("fizz");
			} else if (i % 5 == 0) {
				System.out.print("buzz");
			} else {
				System.out.print(i);
			}//if 끝
			System.out.print(" ,");
		}//for 끝
		System.out.print("...");
	}
}

 

Q10.  *이 1개에서 5개까지 증가했다가 감소하기

for (int i = 0; i < 5; i++) {
//i = 0일 때 i가 5보다 작을 때까지 i+1하면서 증가
    for (int j = 0; j <= i; j++) {
    // j = 0일 때 j가 i보다 작거나 같을 때까지 j+1하면서 증가
        System.out.print("*");
    }
    System.out.println("");// 엔터같은 효과
}
for (int i = 0; i < 5; i++) {// i 0
    for (int j = 5; j > i; j--) {// j 5
        System.out.print("*");
    }
    System.out.println("");
}

 

Q11.  다음의 모양으로 출력하기

for (int i = 0; i < 5; i++) {
    for (int j = 4; j > i; j--) {
        System.out.print("_");
    }
    for (int j2 = 0; j2 <= i; j2++) {
        System.out.print("*");
    }
    System.out.println("");
}

 

Q12.  다음의 모양으로 출력하기

for (int i = 1; i < 10; i++) {
    System.out.print(i + " ");
    if (i % 3 == 0)
        System.out.println();
}

 

참고자료
신용권, '혼자 공부하는 자바'
반응형