[Study #04] IF문, FOR문

    반응형

     

    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();
    }

     

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

    댓글