package superCode;

import java.util.Scanner;

//1. id를 입력받아 joinId와 일치할 경우에만 pw를 입력할 수 있다.
//2. id를 틀린 경우, "ID를 확인해주세요."라는 메세지를 출력
//3. pw가 틀린 경우, "PW를 확인해주세요."라는 메세지를 출력
//4. id와 pw가 모두 일치하는 경우, "로그인 성공입니다."라는 메세지를 출력

public class Join_if_if {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		//임의 계정 정보
		int joinId = 1234;
		int joinPw = 1111;
		
		//사용한태 아이디 입력 요청
		System.out.println("아이디를 입력하세요>");
		int myId = scan.nextInt();
		
		// 아이디 입력 정보 맞으면 밑에 if문 실행
		if(joinId == myId) {
			System.out.println("비밀번호를 입력하세요.");
			int myPw = scan.nextInt();
			
			// 비밀번호까지 맞으면 밑에 if문 실행
			if (joinPw == myPw) {
				System.out.println("로그인 성공");
			}
			// 비밀번호 틀리시 밑에 if문 실행
			if (joinPw != myPw) {
				System.out.println("비밀번호를 확인해주세요.");
			}
		}
		//처음부터 아이디 틀리시 밑에 if문 실행
		if(joinId != myId) {
			System.out.println("아이디를 확인해주세요.");
		}
		
	}

}

 

성공

실패

//1.시험점수를 입력 받는다.
//2.시험점수에 해당하는 학점을 출력한다.
//3.점수표
//	91~100점  A학점
//	90~81점    B학점
//	80이하       재시험
//4.단, 만점이거나 A학점과 B학점의 일의 자리가 7점 이상이면, +를 추가
//	    A학점과 B학점의 일의 자리가 3점 이상이면, -를 추가
//	예)
// 		100 => A+
// 		87  => B+
// 		82  => B-
// 		23  => 재시험
package superCode;

import java.util.Scanner;

public class gradeA_Plus_Minus {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		//1.시험점수를 입력 받는다.
		System.out.println("시험점수 입력  : " );
		int score = scan.nextInt();
		
		
		
		//100 초과시 "오류" 메세지 나오게 출력
		if(score > 100) {
			System.out.println("오류");
		}
		
		
		if(97 <= score && score <=100) {
			System.out.println("A+");
		}
		if(94 <= score && score <=96) {
			System.out.println("A");
		}
		if(91 <= score && score <=93) {
			System.out.println("A-");
		}
		
		
		if(87 <= score && score <=90) {
			System.out.println("B+");
		}
		if(84 <= score && score <=86) {
			System.out.println("B");
		}
		if(81 <= score && score <=83) {
			System.out.println("B-");
		}
		
		if(77 <= score && score <=80) {
			System.out.println("C+");
		}
		if(74 <= score && score <=76) {
			System.out.println("C");
		}
		if(71 <= score && score <=73) {
			System.out.println("C-");
		}
		
		if(0 <= score && score <=70) {
			System.out.println("재시험");
		}
		
		//0 미만시 "오류" 메세지 나오게 출력
		if(score < 0) {
			System.out.println("오류");
		}
	}

}

 

결과

 

입력 범위가 벗어날시

package superCode;

import java.util.Scanner;

public class Join {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		
		System.out.print("[회원가입] 아이디 입력:");
		String joinId = scan.nextLine();
		System.out.print("[회원가입] 비밀번호 입력:");
		int joinPw = scan.nextInt();
		System.out.println("회원가입 완료 ");
		
		scan.nextLine();
		
		boolean loginRe = false;
		// 로그인실패시 재입력 받기 위해 변수 선언
		
		while (!loginRe) {
		System.out.print("[로그인] 아이디 입력:");
		String loginId = scan.nextLine();
		System.out.print("[비밀번호] 비밀번호 입력:");
		int loginPW = scan.nextInt();
		
		if(joinId.equals(loginId) && joinPw == loginPW) {
			System.out.println("로그인 성공");
			
			loginRe = true;
		}
		// || <- 둘 중 하나라도 true면 true
		if(!joinId.equals(loginId)  || joinPw != loginPW) {
			System.out.println("로그인 실패");
			
			scan.nextLine(); // 버퍼 비우기
		}
		
		}
	}

}

 

로그인 성공

로그인 실패

 

Scanner 클래스를 사용, 사용자로부터 정수형으로 날짜를 입력받음

 

입력한 날짜가 1부터 31 사이인지 확인 후 유효한 범위가 아닌 경우,

"1 ~ 31 사이의 값을 입력하세요."라는 메시지를 출력 ( if문 사용 ) 

do while문으로 1~31 사이 값 아닌 경우 다시 입력 받을 수 있게 작성

입력한 날짜가 유효한 범위인 경우, 입력한 날짜에 대해 switch 문을 사용하여 요일을 판별

case에 따라 해당하는 요일과 주중 또는 주말 여부를 출력 

 

 

 

 

package one002;

import java.util.Scanner;

public class SevenMonth {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int day;
        System.out.print("2023년 5월 날짜 입력: ");
        
        do {
            day = sc.nextInt();
            if (day >= 1 && day <= 31) {
                switch (day % 7) {
                    case 1:
                        System.out.println("월요일");
                        System.out.println("주중입니다.");
                        break;
                    case 2:
                        System.out.println("화요일");
                        System.out.println("주중입니다.");
                        break;
                    case 3:
                        System.out.println("수요일");
                        System.out.println("주중입니다.");
                        break;
                    case 4:
                        System.out.println("목요일");
                        System.out.println("주중입니다.");
                        break;
                    case 5:
                        System.out.println("금요일");
                        System.out.println("주중입니다.");
                        break;
                    case 6:
                        System.out.println("토요일");
                        System.out.println("주말입니다.");
                        
                        break;
                    case 7:
                        System.out.println("일요일");
                        System.out.println("주말입니다.");
                        break;
                        
                    
                }

            } else {
                System.out.println("1 ~ 31 사이의 값을 입력하세요.");
            }
        } while (day >= 32);
        
        
    }
}

 

메소드

메소드 선언은 선언부와 실행 블록으로 구성

메소드 선언부를 메소드 시그너처라고 함

메소드 선언은 선언부( 리턴타입, 메소드 이름, 매개 변수 선언 ) 실행 블록 구성 

 

리턴 타입

리턴값이란 메소드를 실행한 후의 결과값

메소드는 리턴값이 있을 수도 있고 없을 수도 있으나 리턴값이 있을 경우 리턴 타입이 선언부에 명시

리턴값이 없는 메소드는 리턴 타입에 void 기술

리턴값이 있는 메소드는 리턴값의 타입을 기술

클래쓰
void powerOn() {...};
double divide( int x, int y ) {...};

메인 ( 호출 ) 
powerOn(); // 매개변수 필요x
double result = divide( 10, 20 ); // 매개변수 필요O
int result = divide( 10, 29 ) // 컴파일 에러 int -> double로 변경해야 됨

 

메소드 이름

숫자로 시작 x, 관례적으로 메소드 이름은 소문자, 다른 단어 혼합시 뒤이어 오는 단어 첫 글자 대문자

잘 작성된 메소드 이름
void run(){...};
void startEngine(){...};
String getName(){...};
int[] getScores(){...};

 

매개 변수 선언

매개 변수는 메소드가 실행할 때 필요한 데이터를 외부로부터 받기 위해 사용

매개 변수가 있는 divide() 메소드 선언
double divide( int x, int y ) {...};

매개 변수가 있는 divide() 메소드 호출
double result = divide ( 10, 20 );
//선언과 동일하게 매개 변수 값을 2개면 2개를 호출

double result = divide ( 10.5, 20.0 ); // 에러
10.5와 20.0은 double 값이므로 int 타입으로 변환 불가라 에러

byte b1 = 10;
byte b2 = 20;
double result = divide ( b1, b2 );
byte는 int로 자동 타입 변환되기 때문에 컴파일 에러 안남

 

 

클래스 ( 메소드 선언 ) 
package sec02.exam03;

public class Calculator {
	// 필드
	int x;
	int y;
	
	//생성자
	Calculator(int x, int y) { //지역변수
		this.x = x;
		this.y = y;
	}
	

	void powerOn() {
		System.out.println("전원을 켭니다.");
	}
	int plus() { 
		
		return x + y; //인스턴스변수
	}
	double divide() { //지역변수
		double result = (double)x / (double)y;
		return result;
	}
	
	// 필드값 초기화
	void setX(int x) {
		this.x = x;
	}
	void setY(int y) {
		this.y = y;
	}
	
	int getX() {
		return x;
	}
	// x,y 값을 읽어옴
	int getY() {
		return y;
	}
	
	
	void powerOff() {
		System.out.println("전원을 끕니다.");
	}
}

main( 메소드 호출 ) 
package sec02.exam03;

public class CalculatorExample {

	public static void main(String[] args) {
		Calculator myCalc = new Calculator(5, 6);
		myCalc.powerOn();
		
		int result1 = myCalc.plus();
		System.out.println("result1=" + result1);
		
//		byte x = 10;
//		byte y = 4;
//		double result2 = myCalc.divide(x, y);
		
		myCalc.x = 10;
		myCalc.y = 3;
		double result2 = myCalc.divide();
		System.out.println("result2=" + result2);
		
		myCalc.setX(10);
		myCalc.setY(3);
		double result3 = myCalc.divide();
		System.out.println("x= " + myCalc.getX());
		System.out.println("y= " + myCalc.getY());
		
		myCalc.powerOff();
	}

}

 

매개 변수의 개수를 모를 경우

메소드의 매개 변수는 개수가 이미 정해져 있는 것이 일반적이지만,

어떤 상황에서는 메서드를 선언 할 때 매개 변수의 개수를 알 수 없는 경우도 존재

예를 들어 여러 개의 수를 모두 합산하는 메소드를 선언해야 한다면 몇 개의 매개 변수가

입력될지 알 수 없기 때문에 매개 변수의 개수를 결정 할 수 없을 것이다.

해결책은 매개 변수를 배열 타입으로 선언하는 것

매개 변수를 배열 타입으로 선언
int sum1(int [] values){ }
sum1() 메소드를 호출할 때 배열을 넘겨줌으로써 배열의 항목 값들을 모두 전달 가능
배열의 항목 수는 호출할 때 결정하면 됨 
int[] values = {1, 2, 3};
int result = sum1(values);
int result = sum1(new int[](1,2,3,4,5));

매개 변수를 배열 타입으로 선언하면 메소드를 호출하기 전에 배열을 생성해야 하는 불편한 점이 있음

클래스 선언
package sec02.exam03;

public class Computer {
	//// 매개 변수의 개수를 모를 경우 ( 선언 )
	int sum1(int[] values) {
		int sum = 0;
		for(int i=0; i<values.length; i++) {
			sum += values[i];
		}
		return sum;
	}
	
	int sum2(int ... values) {
		int sum = 0;
		for(int i=0; i<values.length; i++) {
			sum += values[i];
		}
		return sum;
	}
}
maint ( 호출 ) 
package sec02.exam03;

import java.security.PublicKey;

public class ComputerExample {

	public static void main(String[] args) {
		// 매개 변수의 개수를 모를 경우 ( 호출 )
		
		Computer myCom = new Computer();
		
		int[] values1 = {1, 2, 3};
		int[] arr = new int[]{1, 2, 3};
		
		int[] arr2 = new int[3];
		arr[0] = 1; arr[1] = 2; arr[2] = 3;
				
		int result1 = myCom.sum1(values1);
		System.out.println("result1 = " + result1);
		
		int result2 = myCom.sum1(new int[] {1,2,3,4,5});
		System.out.println("result2 =" + result2);
		
		int result3 = myCom.sum2(1, 2, 3);
		System.out.println("result = " + result3);
		
		int result4 = myCom.sum2(1, 2, 3, 4, 5);
		System.out.println("result4 = " + result4);
	}

}

 

실습

Student 클래스 활용 배열에 학생수 입력 후 국어, 영어, 수학 출력 ( main 출력 )

package sec04.exam02;

import java.util.Scanner;

public class StuEx {
	public static void main(String[] args) {
		boolean run = true;
		int korTot = 0;
		int engTot = 0;
		int mathTot = 0;
		double avgTot = 0.0;
		int korMax = 0;
		int engMax = 0;
		int mathMax = 0;
		String kMaxName = null;
		String eMaxName = null;
		String mMaxName = null;
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("학생 수>");
		int num = Integer.parseInt(scanner.nextLine());
		Student[] students = new Student[num];
		for (int i=0; i <students.length; i++) {
			System.out.print("이름>");
			String name = scanner.nextLine();
			System.out.print("국어>");
			int kor = Integer.parseInt(scanner.nextLine());
			System.out.print("영어>");
			int eng = Integer.parseInt(scanner.nextLine());
			System.out.print("수학>");
			int math = Integer.parseInt(scanner.nextLine());
			korTot += kor;
			engTot += eng;
			mathTot += math;
			students[i] = new Student(name, kor, eng, math);
			if (korMax < students[i].kor) {
				korMax = kor;
				kMaxName = students[i].name;
			}
			if (engMax < students[i].eng) {
				engMax = eng;
				eMaxName = students[i].name;
			}
			if (mathMax < students[i].math) {
				mathMax = math;
				mMaxName = students[i].name;
			}
			
		}
		while (run) {
			System.out.println("---------------------------------------------");
			System.out.println(" 1. 점수리스트 | 2. 분석 | 3. 종료");
			System.out.println("---------------------------------------------");
			System.out.print("선택>");
			
			int selectNo = Integer.parseInt(scanner.nextLine());
			switch(selectNo) {
			case 1:
				System.out.println("\t국어\t영어\t수학");
				System.out.println("------------------------------------------");
				for (Student st : students) {
					System.out.printf("%s\t%d\t%d\t%d\t총점:%d\t평균:%f\n"
							,st.name,st.kor,st.eng,st.math, st.getTotal(), st.getAvg());
				}
				System.out.println("------------------------------------------");
				System.out.printf("총점:\t%d\t%d\t%d\n", korTot, engTot, mathTot);
				break;
			case 2:
				System.out.println("프로그램 분석");
				System.out.printf("국어 최고 점수: %d %s\n",korMax, kMaxName);
				System.out.printf("영어 최고 점수: %d %s\n",engMax, eMaxName);
				System.out.printf("수학 최고 점수: %d %s\n",mathMax, mMaxName);
				break;
			case 3:
				run = false;
				System.out.println("프로그램 종료");
			}
		}
		
		
		
		
		
	}

}

 

Student 클래스 활용 배열에 학생수 입력 후 국어, 영어, 수학 출력 ( class 값 선언)

package sec04.exam02;

public class Student {
	String name;
	int kor, eng, math;
	Student(String name, int kor, int eng, int math) {
		this.name = name;
		this.kor = kor;
		this.eng = eng;
		this.math = math;
	}
	int getTotal() {
		//System.out.println(kor+eng+math);
		return kor+eng+math;
	}
	double getAvg() {
		return getTotal() / 3.0;
	}
	void printResult() {
		System.out.println("이름:" + name);
		System.out.println("국어:" + kor);
		System.out.println("영어:" + eng);
		System.out.println("수학:" + math);
		System.out.println("총점:" + getTotal());
		System.out.println("평균:" + getAvg());
	}

}

 

'프로젝트 기반 자바(JAVA) 응용 SW개발자 취업과정' 카테고리의 다른 글

2023-05-31 11일차  (0) 2023.05.31
2023-05-30 10일차  (0) 2023.05.30
2023-05-25 8일차  (0) 2023.05.25
2023-05-24 7일차  (2) 2023.05.24
2023-05-23 6일차  (0) 2023.05.23

+ Recent posts