[자바기초]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]);
}
}
}
}
'자바(Java) > 자바기초' 카테고리의 다른 글
[자바기초] List & ArrayList (0) | 2024.03.10 |
---|---|
[자바기초] 2차원 배열(2D Array) (0) | 2024.03.03 |
[자바기초.006]코드업100제_기초출력풀이_1001~1007 (0) | 2022.09.12 |
[자바기초.003]문자열,입력 (0) | 2022.07.19 |
[자바기초.002]연산자,형변환,입력 (0) | 2022.07.18 |
댓글