멍하 돌아온 자바공부 4일차입니다.
13강 배열
https://youtu.be/SByN3m_8Nr4?si=mWH-821eOja9KdXQ
배열 선언 방법
int[] array = new int[크기];
원하는 개수만큼 배열을 생성하여 최댓값을 구하기
import java.util.Scanner;
public class Main {
public static int max(int a, int b) {
return (a > b) ? a : b;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("생성할 배열의 크기를 입력하세요 : ");
int number = scanner.nextInt();
int[] array = new int[number];
for(int i = 0; i < number; i++)
{
System.out.println("배열에 입력할 정수를 하나씩 입력하세요. : ");
array[i] = scanner.nextInt();
}
int result = -1;
for(int i = 0; i < number; i++)
{
result = max(result, array[i]);
}
System.out.println("입력한 모든 정수 중에서 가장 큰 값은 : " + result + "입니다.");
}
}
100개의 랜덤 정수의 평균
public class Main {
public static void main(String[] args) {
int[] array = new int[100];
for(int i = 0; i < 100; i++) {
array[i] = (int)(Math.random()*100 + 1);
}
int sum = 0;
for(int i = 0; i < 100; i++)
{
sum += array[i];
}
System.out.println("100개의 랜덤 정수의 평균값은" + sum / 100 + "입니다.");
}
}
Math.random()을 사용하여 랜덤 값 구하기
Math.random()은 0부터 소숫점자리의 값 사이의 값을 랜덤하게 제공함. (0 ~ 0.nnn)
그래서 100을 곱해서 0부터 100사이의 값으로 변환해줌 (0 ~ 1.nnn)
거기에 1을 더해서 범위를 다시 지정해줌 (1 ~ 100.nn)
정수형으로 변환하여 1부터 100까지의 범위로 지정해줌 (1 ~ 100)
(int)(Math.random()*100 + 1);
14강 다차원배열
https://youtu.be/fVCnjfUeS8E?si=HjP7X9JMIjH83pbz
다차원 배열 : 배열이 배열의 원소로 들어가는 구조
a[0,0] | a[0,1] | a[0,2] | a[0,3] |
a[1,0] | a[1,1] | a[1,2] | a[1,3] |
a[2,0] | a[2,1] | a[2,2] | a[2,3] |
다차원 배열에 정수 랜덤 데이터를 입력하기
import java.util.Random;
public class Main {
public static void main(String[] args) {
int N = 50;
int[][] array = new int[N][N];
for(int i = 0; i < N; i++)
{
for(int j = 0; j < N; j++)
{
array[i][j] = (int)(Math.random()*10);
}
}
for(int i = 0; i < N; i++)
{
for(int j = 0; j < N; j++)
{
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
}
15강 클래스
https://youtu.be/4idO8VOr17o?si=I4rBTzc_WLOm9pO2
클래스 : 붕어빵 공장의 붕어빵틀 같은 것 < 특징들을 모아서 담아놓음.
ex. car(속력, 색상, 이름) 등의 형식(클래스)으로 정보를 담아놓고 new car1(10, 빨강, 빨간차), new car2(20, 초록, 초록차)의 형식으로 객체를 생성함.
+인스턴스화 : car 클래스를 다양하게 사용할 수 있게 하는 것
클래스는 유니티 오브젝트로 생각하면 프리팹(prefab) 같은 느낌이고 객체(=인스턴스)는 씬에서 사용하고 있는 오브젝트 느낌?
Node클래스를 이용하여 두 점 사이의 중점을 구하는 프로그램
다른 클래스의 값을 사용하기 때문에 src 하위에서 Node라는 클래스를 하나 더 생성해줌
Node 객체 one과 two를 생성하여 one.getCenter를 사용하여 원하는 값을 리턴받음.
//main.java
public class Main {
public static void main(String[] args) {
Node one = new Node(10,20);
Node two = new Node(30, 40);
Node resultNode = one.getCenter(two);
System.out.println("x : " + resultNode.getX() + " y : " + resultNode.getY());
}
}
Node 클래스에 private로 x와 y값을 생성해줌.
외부에서 x와 y값을 리턴 받을 수 있도록 public으로 get함수를 만들어줌
Node 생성자를 통해 x와 y값을 초기화해줌
//Node.java
public class Node {
private int x;
private int y; //외부에서 접근하지 못하게 private로 선언
public int getX() { //외부에서 x값을 볼 수 있게 public으로 선언해줌
return x;
}
public void setX(int x) {
this.x = x; //this x는 내가 갖고 있는 x
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
//생성자 : 객체를 만들었을 때 자동으로 초기화 해주는 함수 | 클래스랑 동일한 이름을 가짐
public Node(int x, int y) {
this.x = x;
this.y = y;
}
public Node getCenter(Node other) { //다른 노드와 이 노드의 위치 중간 값을 반환
return new Node((this.x + other.getX()) / 2, (this.y + other.getY()) / 2);
}
}
생성자
https://meongjeong.tistory.com/entry/JAVA-%EC%83%9D%EC%84%B1%EC%9E%90-Constructor
16강 상속
https://youtu.be/iYW83DF6MHk?si=AnJuBSkMs2gdkHVR https://youtu.be/5uFdYN_AiUY?si=Sl7_uOoy7aCBymtY
상속 : 다른 클래스가 갖고 있는 정보를 받아오는 것
person {이름, 나이, 키, 몸무게}
student {학년, 반 ...} < student 클래스는 person 클래스를 상속받아 person의 값도 사용할 수 있음
person을 상속받은 student 클래스를 이용하여 객체 생성
사용할 변수를 선언한 후 generate getters and setters를 이용하여 get와 set을 선언해줌
동일한 방법으로 생성자도 생성해줌.
1. person class 생성
//Person.java
public class Person {
private String name;
private int age;
private int height;
private int weight;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public Person(String name, int age, int height, int weight) {
super(); //자신의 부모 클래스에 생성자를 실행?
this.name = name;
this.age = age;
this.height = height;
this.weight = weight;
}
}
2. Student class 생성 및 Person class 상속
//student.java
public class Student extends Person{ //extends를 통해 상속 받음
private String studentIDString;
private int grage;
private double GPA;
public String getStudentIDString() {
return studentIDString;
}
public void setStudentIDString(String studentIDString) {
this.studentIDString = studentIDString;
}
public int getGrage() {
return grage;
}
public void setGrage(int grage) {
this.grage = grage;
}
public double getGPA() {
return GPA;
}
public void setGPA(double gPA) {
GPA = gPA;
}
public Student(String name, int age, int height, int weight, String studentIDString, int grage, double gPA) {
super(name, age, height, weight);
this.studentIDString = studentIDString;
this.grage = grage;
GPA = gPA;
}
public void show() {
System.out.println("---------------");
System.out.println("학생 이름 : " + getName());
System.out.println("학생 나이 : " + getAge());
System.out.println("학생 키 : " +getHeight());
System.out.println("학생 몸무게 : "+getWeight());
System.out.println("학번 : "+getStudentIDString());
System.out.println("학년 : "+getGrage());
System.out.println("학점 : "+getGPA());
}
}
3. main class에서 student 객체를 생성하여 출력
//main.java
public class Main {
public static void main(String[] args) {
Student student1 = new Student("홍길동", 20, 175, 70, "20230101", 1, 4.5);
Student student2 = new Student("이순신", 30, 170, 80, "20230102", 2, 3.5);
student1.show();
student2.show();
}
}
4. 출력
+ 반복문 + 배열을 사용하여 다 다른 학번을 만들어주기
//main.java
public class Main {
public static void main(String[] args) {
Student[] students = new Student[100];
for(int i = 0; i < 100; i++)
{
students[i] = new Student("홍길동", 20, 175, 70, i + "", 1 , 4.5);
students[i].show();
}
}
}
+ 키보드로 값을 입력 받아서 데이터 처리하기
//main.java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("총 몇명의 학생이 존재합니까? : ");
int number = scan.nextInt();
Student[] students = new Student[number];
for(int i = 0; i < number; i++)
{
String name;
int age;
int height;
int weight;
String studentID;
int grade;
double GPA;
System.out.print("학생의 이름을 입력하세요. : ");
name = scan.next();
System.out.print("학생의 나이을 입력하세요. : ");
age = scan.nextInt();
System.out.print("학생의 키를 입력하세요. : ");
height = scan.nextInt();
System.out.print("학생의 몸무게를 입력하세요. : ");
weight = scan.nextInt();
System.out.print("학생의 학번을 입력하세요. : ");
studentID = scan.next();
System.out.print("학생의 학년을 입력하세요. : ");
grade = scan.nextInt();
System.out.print("학생의 학점을 입력하세요. : ");
GPA = scan.nextDouble();
students[i] = new Student(name, age, height, weight, studentID, grade, GPA);
}
for(int i = 0; i < number; i++)
{
students[i].show();
}
//Teacher teacher1 = new Teacher("John Doe", 25, 180, 120, "ABC201", 300000, 5);
//teacher1.Show();
}
}
'JAVA' 카테고리의 다른 글
[JAVA] final 키워드 | 인터페이스(interface) (0) | 2023.09.15 |
---|---|
[JAVA] 추상 클래스(abstract class) (0) | 2023.09.15 |
[JAVA] 생성자 (Constructor) (0) | 2023.09.14 |
[JAVA] 사용자 정의 함수, 반복 함수, 재귀 함수 (1) | 2023.09.14 |
[JAVA] 변수, 사칙 연산, 자료형, 조건문, 반복문, 입출력 (0) | 2023.09.06 |