프로그래밍/JAVA

2023-07-03 수업일지

뚜또꾸뭉 2023. 7. 3. 16:34
반응형

목차

1. 복습하기

2. 배우기

3. 이해하기

1.복습하기

변수 = 값을 저장하는 이름 변수에는 값을 저장한다.

컴퓨터에서는 =을 equal의 뜻이 아닌, 대입을 의미한다. double float의 차이는 조금 더 큰 수나 정밀한 수를 저장할때는 double, 크지 않을 때는 float를 사용한다. char는 한글자를 저장할 수 있다. ''작은따옴표를 사용한다. 여러글자를 저장하면 오류가 난다. String은 여러 글자가 들어가지만, 앞에 대문자가 들어가므로 타입이 아니고 클래스다. 

 

연산자 산술연산자 논리연산자 관계연산자

 

다음에 바로 클래스를 만들어주었는데,

 

package ex01;

public class TypeSample {
	//접근제한자 리턴유무 메소드이름()
	public void run() {
		//변수타입
		int num1 = 80;
		float num2 = 80.5f;
		double num3 = 80.5;
		
		//문자
		char str1 = 'A';
		String str2 = "ABCD";
		
		//불린
		boolean isEnd = false;
		
		System.out.println("num1=" + num1 + "\n");
		System.out.println();
	}
	
	
	
	
}

클래스 안에 이렇게 입력해 두고, Main클래스에

 

package ex01;

public class Main {

	public static void main(String[] args) {
		
		TypeSample a = new TypeSample();
		
		a.run();
		
		
		
		
		
		
	}

}

이렇게 만들어 두었다. 무조건 클래스를 만들었으면 , 메인단에서 클래스를 불러오는 객체를 만들어야하고, 그 객체를 실행시켜야 프로그램이 실행이 되는것이다. 

이런식으로 클래스를 만들어두면, 복잡하지 않고 반복사용이 가능하다.

하지만 'static'를 선언해두면 객체를 만들지 않고도 사용이 가능하다. 

 

 

package ex01;

public class Operation {

	public static void run() {
		//산술연산자 (*,%,+,-,/)
		int kor = 90;
		int eng = 87;
		int mat = 54;
		
		int sum = kor + eng + mat;
		double avg = sum / 3.;
		
		System.out.printf("국어: %d \n영어: %d \n수학: %d \n총점: %d \n평균: %.2f \n",kor,eng,mat,sum,avg);
		
		
	}
	
}

 

여기서

 

삼항연산자라는걸 배웠음. 

 

String pass = avg >= 70 ? "합격" : "불합격";

 

System.out.println("결과:"+pass);

이런식으로 하면 따로 if문 주지 않아도 합격 또는 불합격으로 나오게 된다.

 

 

String pass = (kor >= 60 && eng>=60 && mat>=60 && avg >= 70) ? "합격" : "불합격";

이런식으로 과락도 가능. 프로그램이 심플해져서 많이 사용한다.

 

 

2. 배우기

 

여기서

 

삼항연산자라는걸 배웠음. 

 

String pass = avg >= 70 ? "합격" : "불합격";

 

System.out.println("결과:"+pass);

이런식으로 하면 따로 if문 주지 않아도 합격 또는 불합격으로 나오게 된다.

 

 

String pass = (kor >= 60 && eng>=60 && mat>=60 && avg >= 70) ? "합격" : "불합격";

이런식으로 과락도 가능. 프로그램이 심플해져서 많이 사용한다.

 

int count = 0;

 

if (kor < 60) count ++;

if (eng<60) count ++;

if (kor < 60) count ++;

System.out.println("누락과목수:" + count);

이런식으로 if문이 간단하게 한줄도 가능하다. 중괄호가 필요가 없을 경우에는 if문 안에 하나만 있을경우 

 

package ex01;

import java.util.Scanner;

public class Condition {
	public static void run() {
		//if문 switch~case문
		
		Scanner s = new Scanner(System.in);
		System.out.print("점수:");
		int grade = s.nextInt();
		
		String result = "";
		if (grade >= 90) {
			if(grade>=95) {
				result = "A+";
			}else {
				result = "A0";
			}
				
		}else if(grade>=80) {
			result = "B";
		}else if(grade>=70) {
			result = "C";
		}else if(grade>60) {
			result = "D";
		}else {
			result = "F";
		}
		System.out.println("학점:"+result);
		
		
		
		System.out.print("시간:");
		int time = s.nextInt();
		switch (time) {
		case 6:
			System.out.println("일어나세요!");
			break;
		case 9:
			System.out.println("출근하세요!");
			break;
		case 12:
			System.out.println("점심식사하세요!");
			break;
		case 18:
			System.out.println("퇴근하세요!");
			break;
		default:
			System.out.println("잘못입력했습니다.");
		}
				
				
				
		
		
	
	
	
			
		
		
	}//run
}//class

 

다시 복습. if 문과 switch case문 공부하기. 

package ex01;

import java.util.Scanner;

public class Dimension {

	public static void run() {
		Scanner s = new Scanner(System.in);

		String[] name = new String[22];
		String[] address = new String[22];
		int index = 0;
		boolean run = true;
		while (true) {
			System.out.println("-----------------------");
			System.out.println("1.주소등록 2.주소목록 0.종료");
			System.out.println("-----------------------");
			System.out.print("선택> ");
			String menu = s.nextLine();
			switch (menu) {
			case "0":
				System.out.println("시스템 종료");
				run = false;
				break;
			case "1":
				System.out.print("이름입력> ");
				name[index] = s.nextLine();
				System.out.print("주소입력> ");
				address[index] = s.nextLine();
				index++;
				System.out.println(index +"명 입력완료.");
				break;
			case "2":
				for(int i = 0; i<index;i++) {
					System.out.printf("%d\t%s\t%s\n",i+1,name[i],address[i]);
				}
				break;
			default:
				System.out.println("다시입력");
			}
		}
	}
}

 

package ex01;

public class Student {
	//필드
	private String sno;
	private String sname;
	private String address;
	private String dept;
	
	
	public String getSno() {
		return sno;
	}
	public void setSno(String sno) {
		this.sno = sno;
	}
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getDept() {
		return dept;
	}
	public void setDept(String dept) {
		this.dept = dept;
	}
	
	//생성자 (생략가능하지만)
	//객체를 생성하는것이다.
	//object(instance)
	

	//메서드
	
	
	
	
	
	
	
	
	
	
}

허. 충격적인 사실은 이클립스에서 자동으로 setlget메서드를 생성할 수 있다는것이다. source탭에서 generate 기능을 활용하면 입,출력메서드와 전체출력메서드도 만들 수 있다.

 

package ex01;

import java.util.*;


public class Address1 {
	public static void run() {
		Scanner s = new Scanner(System.in);
		int count = 0;
		boolean run = true;
		List<Student> array = new ArrayList<>();
		//아무것도 안생성된 어레이리스트.
		while (run) {
			System.out.println("---------------------------------------");
			System.out.println("1.주소등록 2.주소목록 3.주소검색 4.주소수정 0.종료");
			System.out.println("---------------------------------------");
			System.out.print("선택> ");
			String menu = s.nextLine();
			switch (menu) {
			case "0":
				run =false;
				System.out.println("프로그램 종료");
				break;
			
				
				
				
				
				
			default:
				System.out.println("다시선택하세요.");
			}// switch
			
			
			
			
			
		} // while
	}// run
}// class

 

arraylist 만들기. 

List<꺽쇠에는 들어갈 리스트를 넣는다.>array = new ArrayList<>();

 

package ex01;

import java.util.*;

public class Address1 {
	public static void run() {
		Scanner s = new Scanner(System.in);
		List<Student> array = new ArrayList<>();
		Student stu = new Student("20231", "홍길동", "인천 서구 경서동");
		array.add(stu);
		// 이름이 같은 생성자가 여러번 쓰이는게 오버로딩
		stu = new Student("20232", "심청이", "인천 부평구 계산동");
		array.add(stu);
		stu = new Student("20233", "장길산", "인천 서구 경서동");
		array.add(stu);

		boolean run = true;

		// 아무것도 안생성된 어레이리스트.
		while (run) {
			System.out.println("----------------------------------------------");
			System.out.println("1.주소등록 2.주소목록 3.주소검색 4.주소수정 5.주소삭제 0.종료");
			System.out.println("----------------------------------------------");
			System.out.print("선택> ");
			String menu = s.nextLine();
			switch (menu) {
			case "0":
				run = false;
				System.out.println("프로그램 종료");
				break;
			case "1":
				stu = new Student();
				stu.setSno("2023" + (array.size() + 1));
				System.out.println("학번>" + stu.getSno());
				System.out.print("이름>");
				stu.setSname(s.nextLine());
				System.out.print("주소>");
				stu.setAddress(s.nextLine());
				array.add(stu);
				// 인덱스 지정해줄 필요 없음. 바구니이기 떄문에.
				System.out.println(array.size() + "명 등록완료!");
				break;
			case "2":
				for (Student st : array) {
					System.out.println(st.toString());
				}
				break;
			case "3":
				boolean find = false;

				System.out.println("검색할이름>");
				String search = s.nextLine();
				for (Student st : array) {
					if (st.getSname().equals(search)) {
						// 찾았을때
						System.out.println(st.toString());
						find = true;
					}
				}

				if (!find) {
					System.out.println("학생을 찾지 못했어요.");
				}

				break;
			case "4":
				System.out.print("수정할이름>");
				String update = s.nextLine();
				for (Student st : array) {
					if (update.equals(st.getSname())) {
						find = true;
						System.out.println("이름" + st.getSname());
						System.out.println("주소" + st.getAddress());

					}
				}
			case "5":
				find = false;
				System.out.print("삭제할이름>");
				String delete = s.nextLine();
				for (Student st : array) {
					if (delete.equals(st.getSname())) {
						find = true;
						array.remove(st);
						System.out.println("삭제가 완료되었습니다.");
						break;
						//리무브를 하면 어레이사이즈가 달라져서 포문이 안돌아감. 그래서 브레이크로 빠져나가야되는거임.
					}
				}if(!find) {
					System.out.println("학생을 찾지 못했어요.");
				}

				break;

			default:
				System.out.println("다시선택하세요.");
			}// switch

		} // while
	}// run
}// class

 

curd 란

create

update

read

delete를 의미하는데, 이것을 완료해야지만 리스트를 만들고 쓰고 수정할 수 있기 때문에 이 기능이 들어있는지 확인해야 한다.

반응형

'프로그래밍 > JAVA' 카테고리의 다른 글

2023-07-12 JAVA ORACLE  (0) 2023.07.13
2023-07-04 학습일지 git  (0) 2023.07.04
2023-06-29 수업일지  (0) 2023.06.29
2023-06-28 학습일지  (0) 2023.06.29
2023-06-27 학습일지  (0) 2023.06.28