객체지향프로그래밍_배열

지선·2023년 4월 6일

배열이란?

인덱스와 인덱스에 대응하는 데이터들로 이루어진 자료 구조
같은 타입의 데이터들 순차적 저장->인덱스 이용해서 데이터 접근

배열 생성

자료형[] 배열명 = new 자료형[몇 개 만들지]
ex) int[] arr = new int[10] ->int형이 10개인 배열 생성

1차배열사용예제 푸는 중인데.. 오류가 나네유..

package baekjoon;
import java.util.Scanner;
public class Baekjoon12891 {

	public static void main(String[] args) {
		
		 Scanner input = new Scanner(System.in);
		 
		int string_length = input.nextInt();
		int part_string_length = input.nextInt();
		String temp = input.nextLine(); // 엔터 먹기
		String string = input.nextLine();
		String[] string_arr= string.split("");//문자열을 받아서 한 알파벳씩 배열에 넣어줌
		int[] arr = new int[4]; //부분문자열의 AGCT 개수를 넣을 배열
		
		int[] AGCT_arr= new int[4];
		
		for(int i=0; i<4; i++) {//AGCT의 최소 개수가 들어있는 배열
			AGCT_arr[i] = input.nextInt();
		}
		
		int cnt=0;
		
		for(int i=0; i<part_string_length;i++) {
			if(string_arr[i].equals("A")) {
				arr[0]++;
			}
			if(string_arr[i].equals("C")) {
				arr[1]++;
			}
			if(string_arr[i].equals("G")) {
				arr[2]++;
			}
			if(string_arr[i].equals("T")) {
				arr[3]++;
			}
		}
		for(int i=0;i<string_length-part_string_length+1;i++) {
			
			if((arr[0]>=AGCT_arr[0])&&(arr[1]>=AGCT_arr[1])&&(arr[2]>=AGCT_arr[2])&&(arr[3]>=AGCT_arr[3])) {
				cnt++;
			}
			//===================================
			//기존 부분 문자열의 첫 문자의 갯수 제거
			if(string_arr[i].equals("A")) {
				arr[0]--;
			}
			if(string_arr[i].equals("C")) {
				arr[1]--;
			}
			if(string_arr[i].equals("G")) {
				arr[2]--;
			}
			if(string_arr[i].equals("T")) {
				arr[3]--;
			}
			//======================================
			//기존 부분 문자열에서 새로운 문자열 추가
			if(string_arr[i+part_string_length].equals("A")) {
				arr[0]++;
			}
			if(string_arr[i+part_string_length].equals("C")) {
				arr[1]++;
			}
			if(string_arr[i+part_string_length].equals("G")) {
				arr[2]++;
			}
			if(string_arr[i+part_string_length].equals("T")) {
				arr[3]++;
			}
			
		}
		
	}	

}

해결하면 고치도록 하겠습네다

2차배열

자료형[][]배열명=new 자료형[a][b]
a만 들어가거나 a,b 들어가게 생성해야함
*b만 있을 수는 x
a는 층 수, b는 방 수

2차 배열 만들기 예제

package week5;

import java.util.Scanner;

public class Main {

	public static void setArray(int[][] arr) {
		System.out.println("2차 배열을 0부터 초기화 합니다.");

		for (int i = 0; i < arr.length; i++) {
			for (int k = 0; k < arr[i].length; k++) {
				arr[i][k] = 10 * i + k;
			}
		}
	}

	public static void showArray(int[][] arr) {
		System.out.println("2차 배열을 출력합니다.");

		for (int i = 0; i < arr.length; i++) {
			for (int k = 0; k < arr[i].length; k++) {
				System.out.printf("%3d", arr[i][k]);
			}
			System.out.println();
		}
	}

	public static void main(String[] args) {

		// 1. 정방행렬 만들기
		// 2. 비정방행렬 만들기, 랜덤하게 입력받아서 !

		int[][] arr1 = new int[3][10];// 3행 10열
		int[][] arr2 = new int[10][];// 10행 n열
		int[][] arr3 = null;// n행 m열

		// 초기화: 0부터~
		setArray(arr1);
		showArray(arr1);

		// 삼각형 모양 비정방 배열 만들기
		for (int i = 0; i < arr2.length; i++) {
			arr2[i] = new int[i + 1];
		}
		setArray(arr2);
		showArray(arr2);

		// 행, 열 모두 정해지지 않은 비정방 배열 만들기
		System.out.print("몇 층짜리 건물을 만들까요? ");
		Scanner input = new Scanner(System.in);
		int= input.nextInt();
		// 행 크기의 배열 만들기
		arr3 = new int[][];
		int room;
		for (int i = 0; i <; i++) {
			System.out.printf("%2d층에 만들고 싶은 방의 갯수는? :", i + 1);
			room = input.nextInt();
			arr3[i] = new int[room];
		}
		setArray(arr3);
		showArray(arr3);
	}

}
profile
긍정왕되기

0개의 댓글