JAVA
chapter05 : array
GAWON
2023. 5. 16. 17:37
test_arry
Q1. 배열의 크기가 10인 배열을 선언하고
1~10까지 순서대로 값을 넣은 후
배열과 배열의 값의 합을 출력
t[] scores = new int[10];
int g = 0;
for(int i = 0; i<10;i++) {
scores[i] = i+1;
System.out.println(scores[i]);
g = g+scores[i];
}
System.out.println("G 는:"+g);
Q2. 배열 int[] answer={1,4,4,3,1,4,4,2,1,3,2}에서 각 숫자의 갯수를 출력
* 숫자가 1~4까지 이므로 크기 4의 배열 counter를 만들어서 각 인덱스에 1~4의 개수를 입력 및 출력
Q3. 배열 int[][] arr={{1, 2, 3, 4}, {5, 6, 7}, {8, 9}} 에서 각 값을 2씩 증가시키는 프로그램 작성
ex) 1 2 3 4
5 6 7
8 9
3 4 5 6
7 8 9
10 11
* 배열을 전달 받아 데이터를 출력하는 메소드 = arrPrint
* 배열과 증가할 값을 전달 받아 해당 값만큼 증가시키는 메소드 = addTwoArr
1.1 배열
- 같은 타입의 데이터를 연속된 공간에 나열시키고, 각 데이터에 인덱스(index)를 부여해놓은 자료구조이다.
- 같은 타입의 데이터만 저장할 수 있다.
- 배열의 인덱스는 0부터 시작한다.
- 배열이 생성되면 배열의 길이를 length 필드 값으로 사용할 수 있다.
1.2 배열 선언
- 선언과 동시에 저장할 수 있는 데이터 타입이 결정된다.
- 한 번 생성된 배열은 길이를 늘리거나 줄일 수 없다.(동적 배열 제외)
1.3 다차원 배열
- 예를 들어 2(행)x3(열)의 배열을 만들 수 있다.
ex) int[][] scores = new int[2][3];
1.4 객체를 참조하는 배열
- 기본 타입(byte, char, short, int, long, float, double, boolean) 배열은 직접 값을 가지고 있지만
참조 타입(클래스, 인터페이스) 배열은 각 항목에 객체의 번지를 가지고 있다.
Test01.java
Q. 임의의 정수값 5개를 저장한 배열 중에서 인덱스가 1인 곳의 값을 출력
package org.joonzis.test;
public class Test01 {
public static void main(String[] args) {
// Test01.java
// Q. 임의의 정수값 5개를 저장한 배열 중에서 인덱스가 1인 곳의 값을 출력
// 1. 배열 선언 int[] arr = new int[5];
// 2. 배열 초기화 int[] arr = {1,2,3,4,5};
// 1. 임의의 정수값 5개를 저장한 배열 만들기
// 2. 해당 배열의 1번 인덱스 값 출력
int[] arr = {1,2,3,4,5};
System.out.println(arr[1]);
}
}
Test02.java
Q. 10, 20, 50, 60, 13, 25, 97 의 총 7개의 정수 값을 저장한 배열을 선언 후
60의 값이 들어있는 배열의 인덱스를 출력
package org.joonzis.test;
public class Test02 {
public static void main(String[] args) {
// Test02.java
// Q. 10, 20, 50, 60, 13, 25, 97 의 총 7개의 정수 값을 저장한 배열을 선언 후
// 60의 값이 들어있는 배열의 인덱스를 출력
int[] arr = {10, 20, 50, 60, 13, 25, 97};
for(int i=0; i<arr.length; i++) {
if(arr[i] == 60) {
System.out.println("60의 인덱스 번호 : " + i);
}
}
}
}
Test03.java
Q. Test02.java 의 값들을 모두 더하고, 총점과 평균을 출력
package org.joonzis.test;
public class Test03 {
public static void main(String[] args) {
// Test03.java
// Q. Test02.java 의 값들을 모두 더하고, 총점과 평균을 출력
int[] arr = {10, 20, 50, 60, 13, 25, 97};
int sum = 0; // 합계 변수
double avg = 0;
for(int i=0; i<arr.length; i++) {
sum += arr[i];
}
avg = (double)sum / arr.length;
System.out.println("arr의 합계 : " + sum);
System.out.println("평균 : " + avg);
// 평균 == 합계/개수
//avg = (double)sum / arr.length;
}
}
Test04.java
Q. 길이가 5인 int형 배열 선언 후, 사용자로부터 콘솔입력 받아 해당 데이터 값을 모두 더해서 합을 출력하기
package org.joonzis.test;
import java.util.Arrays;
import java.util.Scanner;
public class Test04 {
public static void main(String[] args) {
// Test04.java
// 1) Q. 길이가 5인 int형 배열 선언 후,
// 2) 사용자로부터 콘솔입력 받아
// 3) 해당 데이터 값을 모두 더해서 합을 출력하기
int[] arr = new int[5];
Scanner sc = new Scanner(System.in);
// 값 입력 for문
for(int i=0; i<arr.length; i++) {
System.out.print(i +"번 인덱스 값 입력 >> ");
arr[i] = sc.nextInt();
}
// System.out.println( Arrays.toString(arr) );
// 합계 구하는 for
int sum = 0;
for(int i=0; i<arr.length; i++) {
sum = sum + arr[i];
}
System.out.println("배열 내 값의 총 합 : " + sum);
}
}
Test05. java
Q. int[] arr = {13, 22, -3, 92, 55, 5}
배열에서 값을 바꾸고 싶은 인덱스 2개를 선택하여
서로 값을 바꾸어 값들을 출력
package org.joonzis.test;
import java.util.Arrays;
import java.util.Scanner;
public class Test05 {
public static void main(String[] args) {
// Test05. java
// Q. int[] arr = {13, 22, -3, 92, 55, 5}
// 배열에서 값을 바꾸고 싶은 인덱스 2개를 선택하여
// 서로 값을 바꾸어 값들을 출력
int[] arr = {13, 22, -3, 92, 55, 5};
Scanner sc = new Scanner(System.in);
System.out.print("변경할 첫 번째 인덱스 >> ");
int fir = sc.nextInt();
System.out.print("변경할 두 번째 인덱스 >> ");
int sec = sc.nextInt();
System.out.println("변경 전 데이터 : " + Arrays.toString(arr));
int tmp = 0; // 임시 변수
tmp = arr[fir];
arr[fir] = arr[sec];
arr[sec] = tmp;
System.out.println("변경 후 데이터 : " + Arrays.toString(arr));
sc.close();
}
}
Test06.java
Q. Test05의 배열을 이용하여 배열 내 값들의 최소, 최대값을 출력
package org.joonzis.test;
public class Test06 {
public static void main(String[] args) {
// Test06.java
// Q. Test05의 배열을 이용하여 배열 내 값들의 최소, 최대값을 출력
int[] arr = {13, 22, 3, 92, 55, 5};
int max = arr[0];
int min = arr[0];
for(int i=0; i<arr.length; i++) {
// 최대 값
if(max < arr[i]) {
max = arr[i];
}
// 최소 값
if(min > arr[i]) {
min = arr[i];
}
}
System.out.println("최대 : " + max);
System.out.println("최소 : " + min);
}
}
Test07.java
Q. 길이가 10인 int형 배열 선언 후, 사용자로부터 콘솔입력 받아 값을 저장한 뒤
배열에 있는 정수 중에서 3의 배수만 출력해보자.
int[] arr = new int[10];
Scanner sc = new Scanner(System.in);
// 값 입력 for문
for(int i=0; i<arr.length; i++) {
System.out.print(i +"번 인덱스 값 입력 >> ");
arr[i] = sc.nextInt();
}
// 출력 for문
for(int i=0; i<arr.length; i++) {
if(arr[i] % 3 == 0) {
System.out.println(arr[i]);
}
}
sc.close();
}
}
Test08.java
Q. 성적 관리 프로그램
5명의 int형 점수를 저장하는 scores 배열을 선언하고, 점수를 입력받아 최대, 최소, 평균 점수를 출력하기
String형 배열 names를 선언하고, 학생 5명의 이름을 초기화 한 뒤 활용
실행 예)
바트의 점수 입력 >> 70
리사의 점수 입력 >> 100
package org.joonzis.test;
import java.util.Arrays;
import java.util.Scanner;
public class Test08 {
public static void main(String[] args) {
// Test08.java
// Q. 성적 관리 프로그램
// 5명의 int형 점수를 저장하는 scores 배열을 선언하고, 점수를
// 입력받아 최대, 최소, 평균 점수를 출력하기
// String형 배열 names를 선언하고, 학생 5명의 이름을 초기화 한 뒤 활용
// 실행 예)
// 바트의 점수 입력 >> 70
// 리사의 점수 입력 >> 100
// ** 출력 내용 **
// 최대 점수, 최소 점수, 평균 점수
// 제일 높은 점수를 받은 학생의 점수와 이름 출력
int[] scores = new int[5];
Scanner sc = new Scanner(System.in);
String[] names = {"김씨", "이씨", "박씨", "최씨", "정씨"};
for(int i=0; i<scores.length; i++) {
System.out.print(names[i] + "의 점수 입력 >> ");
scores[i] = sc.nextInt();
}
int max = scores[0];
int min = scores[0];
int sum = 0;
double avg = 0;
int maxIdx = 0;
for(int i=0; i<scores.length; i++) {
// 최대 값
if(max < scores[i]) {
max = scores[i];
maxIdx = i;
}
// 최소 값
if(min > scores[i]) {
min = scores[i];
}
sum += scores[i]; // 합계
}
avg = (double)sum/scores.length; // 평균
System.out.println("최고 점수 : " + max + ", 학생 : " + names[maxIdx]);
System.out.println("최저 점수 : " + min);
System.out.println("점수 평균 : " + avg);
}
}
Test09.java
Q. 과목 이름을 입력받아 해당 과목 점수를 출력해주는 프로그램을 작성.
무한반복을 하다가 "그만"을 입력 받으면, 프로그램 종료
★ String[] subjectArr = {"Java", "Python", "Android", "JSP", "Javascript"};
int[] scoreArr = {95, 88, 78, 62, 55};
실행 예)
Java의 점수는 : 95
package org.joonzis.test;
import java.util.Scanner;
public class Test09 {
public static void main(String[] args) {
// Test09.java
// Q. 과목 이름을 입력받아 해당 과목 점수를 출력해주는 프로그램을 작성.
// 무한반복을 하다가 "그만"을 입력 받으면, 프로그램 종료
// ★ String[] subjectArr = {"Java", "Python", "Android", "JSP", "Javascript"};
// int[] scoreArr = {95, 88, 78, 62, 55};
// 실행 예)
// Java의 점수는 : 95
Scanner sc = new Scanner(System.in);
String[] subjectArr = {"Java", "Python", "Android", "JSP", "Javascript"};
int[] scoreArr = {95, 88, 78, 62, 55};
while(true) {
System.out.print("과목 이름 >> ");
String subName = sc.next();
for(int i=0; i<subjectArr.length; i++) {
if(subName.equalsIgnoreCase(subjectArr[i])) {
System.out.println(subjectArr[i] + "의 점수는 : " + scoreArr[i]);
}
}
if(subName.equals("그만")) {
break;
}
}
sc.close();
}
}
Test10.java
Q. 5줄로 된 교실이 있다. 각 줄마다 학생 수가 다르다.
예시) 1줄 : 3명
2줄 : 4명
...
5줄 : 5명
각 줄마다 존재하는 학생 수를 입력 받아 학생 수 만큼만 공간을 할당하여 2차원 배열을 생성하시오.
생성 확인을 위해 할당된 공간에 정수 1을 저장하고 출력하시오.
★ 줄은 행을 뜻함
실행 예)
1행 >>1
2행 >>2
3행 >>3
4행 >>4
5행 >>5
1
1 1
1 1 1
1 1 1 1
1 1 1 1 1
package org.joonzis.test;
import java.util.Scanner;
public class Test10 {
public static void main(String[] args) {
// 1행 >>3
// 2행 >>2
// 3행 >>3
// 4행 >>4
// 5행 >>5
// 1 1 1
// 1 1
// 1 1 1
// 1 1 1 1
// 1 1 1 1 1
Scanner sc = new Scanner(System.in);
int[][] arr = new int[5][];
// 입력 for
for(int i=0; i<arr.length; i++) {
System.out.print((i+1) + "행 >> ");
int row = sc.nextInt();
arr[i] = new int[row];
for(int j=0; j<arr[i].length; j++) {
arr[i][j] = 1;
}
}
for(int i=0; i<arr.length; i++) {
for(int j=0; j<arr[i].length; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
}
}