본문 바로가기
자바(Java)/자바기초

[자바기초]1차원 배열(array)

by 긱펀 2024. 3. 1.
반응형

[자바기초]1차원 배열(array)

 

[1] 배열이란?

  • 배열은 여러 개의 변수를 하나로 묶어서 사용하기 위한 데이터 구조이다.
  • 동일 자료형(Data Type)의 변수인 구성요소(element, component)를 나열한다.

 

[2] 배열 코딩 연습

 

[예제1] 자바에서 new 연산자를 이용해 배열을 만들고, 초기화를 하지 않은 상태에서 배열의 요소를 출력해보자.

public class Main {
  public static void main(String[] args) {

    // 초기화 하지 않은 변수를 사용하면 오류 발생
    int b;  // 초기화 하지 않았다.
    //System.out.println(b); // 컴파일 오류

    // 배열은 자료형에 맞게 0/0.0/false/null으로 자동 초기화 된다.
    // [1]
    double[] a = new double[5]; // 배열선언
    // [2]
    // double a[] = new double[5]; // 이렇게 선언가능.
    // 1번이 더 낫다.
    // 이유1: a의 자료형이 double 배열형임을 빨리 알 수 있다.
    // 이유2: 배열을 반환하는 메서드에서 1을 사용하는 것이 원칙이다.

    System.out.println("a[0]=" + a[0]);
    System.out.println("a[1]=" + a[1]);
    System.out.println("a[2]=" + a[2]);
    System.out.println("a[3]=" + a[3]);
    System.out.println("a[4]=" + a[4]);
  }
}

 

 

*배열 초기화 코드

 

public class Main {
  public static void main(String[] args) {
    int[] a = {1,2,3,4,5};
    int[] b;
   // b = {5,4,3,2,1}; // error
    b = new int[]{5,4,3,2,1}; // OK
    
    
    for(int i = 0; i < a.length; i++) {
      System.out.println("a["+i+"]="+a[i]);
    }
    for(int i = 0; i < b.length; i++) {
      System.out.println("b["+i+"]="+b[i]);
    }
  }
}

 

[유제1]

정수 4개를 저장할 수 있는 int type(정수형)의 배열 "intArray"를 하나 만드세요.

그리고 만들어진 intArray의 모든 요소를 아래와 같이 출력하세요.(intArray에 초기화 하지 않음)

(반복문 사용하지 말고 println() 으로 하나씩 출력하기)


 

[예제2] 배열의 요소에 접근하여 5,4,3,2,1 값을 차례대로 저장하고 출력해보자.

public class Main {
  public static void main(String[] args) {
    int[] a = new int[5]; // array 선언

    for(int i = 0; i < a.length; i++) {
      a[i] = 5 - i;
    }

    for(int i = 0; i < a.length; i++) {
      System.out.println("a["+i+"]=" + a[i]);
    }
  }
}

 

 

[유제2-1] int형 정수 5개를 저장할 수 있는 배열을 하나 만들고, 배열의 요소에 1,2,3,4,5 값을 차례대로 저장하고 출력하세요.

 

[유제2-2] double형 실수 5개를 저장할 수 있는 배열을 하나 만들고, 배열의 요소에 1.1, 2.1, 3.1, 4.1, 5.1 값을 차례대로 저장하고 출력하세요.


 

[예제3] Random 클래스를 이용해 랜덤 숫자를 만들어 배열에 저장하고, 배열 요소값을 출력해보자.

import java.util.Random; // 랜덤 라이브러리

public class Main {
  public static void main(String[] args) {
    Random rand = new Random(); // random object
    int[] a = new int[5];

    for(int i = 0; i < a.length; i++) {
      a[i] = rand.nextInt(10); // 0 ~ 9 random number
    }

    for(int i = 0; i < a.length; i++) {
      System.out.println("a["+i+"]="+a[i]);
    }
  }
}

 

 

[유제3-1]  정수 5개를 저장할 수 있는 배열을 하나 만드세요. 그리고 1~10 사이의 랜덤 숫자를 배열에 저장하고, 배열 요소값을 가장 뒤쪽 배열부터 앞쪽 순서대로 출력해보세요.

 

 

 

[유제3-2] 정수 10개를 저장할 수 있는 배열을 하나 만드세요. 그리고 1~45 사이의 랜덤 숫자를 배열에 저장하고, 배열 요소값을 앞에서 부터 차례대로 출력해 보세요.

 


[예제4] Scanner 클래스로 정수형 배열의 요소개수 입력을 받으세요. 그리고 배열 요소에 하나씩 값을 입력한 뒤 마지막에 배열 요소들을 모두 출력합니다.

import java.util.Scanner; // 입력 라이브러리

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

    System.out.print("n:");
    int n = scan.nextInt();
    int[] a = new int[n];

    for(int i = 0; i < n; i++) {
      System.out.print("a[" + i + "]=");
      a[i] = scan.nextInt();
    }
    System.out.println("Show elements:");
    for(int i = 0; i < a.length; i++) {
      System.out.println(a[i]);
    }
  }
}

 

 

[유제4-1] 실수를 저장할 수있는 double형의 배열을 하나 만들고, Scanner 클래스로 배열의 요소 개수를 입력 받습니다. 그리고 각 배열의 요소에, 1.1, 1.2, 1.3, 1.4, 1.5를 키보드로 입력 받습니다. 마지막에 배열의 모든 요소를 출력합니다.

 

 

 

[유제4-2]  Scanner 클래스로 정수형 배열의 요소개수 입력을 받으세요. 그리고 배열 요소에 1~10 사이의 랜덤 숫자를 저장하세요.마지막에 배열 요소들을 모두 출력합니다.

 


 

 

 

[예제5] 합계, 평균, 최고점, 최저점을 구하는 프로그램을 만들어 보자. 사람 수와 점수는 키보드를 통해 입력받는다.

import java.util.*;

public class Main {
  public static void main(String[] args) {
    Scanner stdIn = new Scanner(System.in);
    System.out.print("number of people:");
    int n = stdIn.nextInt();
    int[] points = new int[n];

    System.out.println("Enter points:");
    int sum = 0;
    for(int i = 0; i < n; i++) {
      System.out.print("NO."+(i+1)+" point:");
      points[i] = stdIn.nextInt();
      sum += points[i];
    }

    int max = points[0];
    int min = points[0];
    for(int i = 0; i < n; i++) {
      if(points[i] > max) max = points[i];
      if(points[i] < min) min = points[i];
    }

    System.out.println("sum:" + sum);
    System.out.println("avg:" + (double)sum/n);
    System.out.println("MAX:" + max);
    System.out.println("MIN:" + min);
  }
}

 


 

[유제5-1] 아래와 같은 배열에 점수 5개가 들어 있다. 이 점수의 총 합(sum)과 평균(avg)을 구하는 코딩을 하고, 합과 평균을 아래 그림과 같이 출력하세요.

int[] points = {75, 86, 95, 87, 100};

 

 

[유제5-2] 위 코드에서 점수 최대값을 아래와 같이 추가로 출력되게 해보세요.

 

 

[유제5-3] 위 코드에서 점수 최소값을 아래와 같이 추가로 출력되게 해보세요.

 

 

 

[예제6] 배열에서 특정 값을 찾는 코딩을 해보자.

import java.util.*;

public class Main {
  public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.print("Number of element:");
    int n = scan.nextInt();
    int[] a = new int[n];

    for(int i = 0; i < n; i++) {
      System.out.print("a["+i+"]=");
      a[i] = scan.nextInt();
    }
    System.out.print("Number to find:");
    int key = scan.nextInt();

    int idx = 0;
    for(int i = 0; i < n; i++) {
      if(a[i] == key) {
        idx = i;
        break;
      }
    }
    if(idx < n)
      System.out.println("It is in a["+idx+"]");
    else
      System.out.println("It doesn't exist.");
  }
}

 

 

[유제6] 위의 코드의 배열에서, 짝수만 출력하는 코드로 바꿔보세요.


[유제 정답 확인 / 아래 "더보기"클릭]

더보기

[유제1]

public class Main {
  public static void main(String[] args) {
    int[] a = new int[4];

    System.out.println("a[0]=" + a[0]);
    System.out.println("a[1]=" + a[1]);
    System.out.println("a[2]=" + a[2]);
    System.out.println("a[3]=" + a[3]);
  }
}

[유제2-1]

public class Main {
  public static void main(String[] args) {
    int[] a = new int[5]; // array 선언

    for(int i = 0; i < a.length; i++) {
      a[i] = i;
    }

    for(int i = 0; i < a.length; i++) {
      System.out.println("a["+i+"]=" + a[i]);
    }
  }
}

 [유제2-2]

public class Main {
  public static void main(String[] args) {
    double[] a = new double[5]; // array 선언

    for(int i = 0; i < a.length; i++) {
      a[i] = i + 1.1;
    }

    for(int i = 0; i < a.length; i++) {
      System.out.println("a["+i+"]=" + a[i]);
    }
  }
}

 [유제3-1]

import java.util.Random; // 랜덤 라이브러리

public class Main {
  public static void main(String[] args) {
    Random rand = new Random(); // random object
    int[] a = new int[5];

    for(int i = 0; i < a.length; i++) {
      a[i] = rand.nextInt(10) + 1; // 1 ~ 10 random number
    }

    for(int i = a.length-1; i >= 0; i--) {
      System.out.println("a["+i+"]="+a[i]);
    }
  }
}

[유제3-2]

import java.util.Random; // 랜덤 라이브러리

public class Main {
  public static void main(String[] args) {
    Random rand = new Random(); // random object
    int[] a = new int[10];

    for(int i = 0; i < a.length; i++) {
      a[i] = rand.nextInt(45) + 1; // 1 ~ 45 random number
    }

    for(int i = 0; i < a.length; i++) {
      System.out.println("a["+i+"]="+a[i]);
    }
  }
}

[유제4-1]

import java.util.Scanner; // 입력 라이브러리

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

    System.out.print("n:");
    int n = scan.nextInt();
    double[] a = new double[n];

    for(int i = 0; i < n; i++) {
      System.out.print("a[" + i + "]=");
      a[i] = scan.nextDouble();
    }
    System.out.println("Show elements:");
    for(int i = 0; i < a.length; i++) {
      System.out.println(a[i]);
    }
  }
}

 

 


[유제4-2]

import java.util.Random; // 랜덤 라이브러리
import java.util.Scanner; // 입력 라이브러리

public class Main {
  public static void main(String[] args) {
    Random rand = new Random();
    Scanner scan = new Scanner(System.in);

    System.out.print("n:");
    int n = scan.nextInt();
    int[] a = new int[n];

    for(int i = 0; i < n; i++) {
      a[i] = rand.nextInt(10) + 1;
    }
    System.out.println("Show elements:");
    for(int i = 0; i < a.length; i++) {
      System.out.println(a[i]);
    }
  }
}

 


[유제5-1]

import java.util.*;

public class Main {
  public static void main(String[] args) {
    int[] points = {75, 86, 95, 87, 100};
    int sum = 0;
    
    for(int i = 0; i < points.length; i++) {
      sum += points[i];
    }
    
    System.out.println("sum:" + sum);
    System.out.println("avg:" + (double)sum/points.length);
  }
}

 [유제5-2]

import java.util.*;

public class Main {
  public static void main(String[] args) {
    int[] points = {75, 86, 95, 87, 100};
    int sum = 0;
    
    for(int i = 0; i < points.length; i++) {
      sum += points[i];
    }
    int max = points[0];
    for(int i = 0; i < points.length; i++) {
      if(points[i] > max) max = points[i];
    }
    System.out.println("sum:" + sum);
    System.out.println("avg:" + (double)sum/points.length);
    System.out.println("MAX:" + max);
  }
}

 

 [유제5-3]

import java.util.*;

public class Main {
  public static void main(String[] args) {
    int[] points = {75, 86, 95, 87, 100};
    int sum = 0;
    
    for(int i = 0; i < points.length; i++) {
      sum += points[i];
    }
    int max = points[0];
    int min = points[0];
    for(int i = 0; i < points.length; i++) {
      if(points[i] > max) max = points[i];
      if(points[i] < min) min = points[i];
    }
    System.out.println("sum:" + sum);
    System.out.println("avg:" + (double)sum/points.length);
    System.out.println("MAX:" + max);
    System.out.println("MIN:" + min);
  }
}

 

[유제6]

import java.util.*;

public class Main {
  public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.print("Number of element:");
    int n = scan.nextInt();
    int[] a = new int[n];

    for(int i = 0; i < n; i++) {
      System.out.print("a["+i+"]=");
      a[i] = scan.nextInt();
    }
   
    int idx = 0;
    for(int i = 0; i < n; i++) {
      if(a[i] % 2 == 0) { // even number?
        System.out.println(a[i]);
      }
    }
  }
}

 

728x90
반응형

댓글