# 3.1 반복문
# 3.3 배열
>> 배열을 생성하는 방법
int i [] = new int [100]; //[]배열공간에 100개의 배열공간 생성
>> 초기화된 배열을 만드는 방법
int intArray [] = {1,2,3,4,5} //[]이라는 배열 공간에 1,2,3,4,5를 넣어 배열 초기화 하기
배열의 원소를 접근하려면 반드시 배열이 생성되어 있어야한다. 즉 , 공간 할당이 되어 있어야 한다.
>> 배열의 크기 판단
int intArray [] = new int [10];
int size = intArray.length; // size 는 10
.length로 판단..
>>배열과 for each 문
for(변수:배열레퍼런스){
//반복 작업
}
//case 1
int n [] = {1,2,3,4,5};
int sum = 0;
for(int k : n){
sum+=k;
}
System.out.println (sum)
//case 2
String n[] = {"A","B","C"};
for(String s:n){
System.out.println(s+" ");
}
for(새 변수 : 배열 reference)만 잊지말자.
# 3.4 다차원 배열
>> 다차원 배열 선언과 동시에 생성
int intArray [][] = new int [3][2];
char charArray [][] = new char [5][5];
double doubleArray [][] = new double [3][4];
이렇게 하면 선언과 동시에 생성 하는 다차원 배열.
>>2차원 배열 초기화
int intArray [][] = { {0,1,2}, {3,4,5}, {6,7,8} };
행렬을 떠올리면 쉬움.
이렇게 하면 2차원 배열을 초기화 한 것.
# 3.5 메소드에서 배열 리턴
# 3.6 main() 메소드
public static void main(String [] args)
> main() 메소드는 public 속성이다
> main() 메소드는 static 속성이다.
> main() 메소드의 리턴 타입은 void 이다.
> main() 메소드에는 문자열 배열이 매개변수로 전달된다.
# 3.7 자바의 예외 처리
자바에서 실행 중에 예외가 발생하는 경우는 크게 4가지
- 정수를 0으로 나누는 경우 (ArithmeticException 오류 발생)
- 배열의 크기보다 큰 인덱스로 배열의 원소를 접근하는 경우
- 존재하지 않는 파일을 읽으려고 하는 경우
- 정수의 입력을 기다리는 코드가 실행되고 있을 때, 사용자가 문자를 입력한 경우
예외 vs 실행시간오류
예외 (exception) | 실행시간오류(try-catch) |
- try-catch를 사용해서 제어 할 수 있는 오류 | - 예측할 수 없음 - 강제로 종료하지 않는 한 멈출 수 없음 |
예외처리, try-catch-finally 문
try{
// 예외가 발생할 가능성이 있는 실행문(try 문)
}catch(처리할 예외 타입 선언){
// 예외 처리문 (catch블록)
}finally{
// 예외 발생 여부와 상관없이 무조건 실행되는 문장(finally 블록)
}
java.lang.*; 을 import 하고
catch에 들어갈 예외 타입은 예외 발생 시 나오는 예외 타입 (예외 클래스) 적으면 됨.
Q. try-catch 블록을 이용하여 정수를 0으로 나누는 경우에 "0으로 나눌 수 없습니다"를 출력하고 다시 입력받는 프로그램을 작성하시오.
import java.util.*;
import java.lang.*;
public class prac220530{
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
while(true) {
System.out.print("나뉨수를 입력하시오 : ");
int n1 = scn.nextInt();
System.out.print("나눗수를 입력하시오 : ");
int n2 = scn.nextInt();
try {
int result = n1/n2;
System.out.println(n1 + "을 " + n2 + "로 나누면 몫은 " + result+"이다.");
break;
}catch(ArithmeticException e) {
System.out.println("0으로 나눌 수 없습니다. 다시 입력하세요.");
}
}
}
}
Q. 배열의 인덱스가 범위를 벗어날 때 발생하는 ArrayIndexOutOfBoundsException을 처리하는 프로그램을 작성하시오.
import java.util.*;
import java.lang.*;
public class prac220530{
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
int intArray [] =new int [5];
intArray[0] = 0;
try {
for(int i=0;i<5;i++) {
intArray[i+1] = i+1 + intArray[i];
System.out.println("intArray ["+i+"] = "+intArray[i]);
}
}catch (ArrayIndexOutOfBoundsException e) {
System.out.println("배열의 인덱스가 범위를 벗어났습니다");
}
}
}
Q. 3개의 정수를 입력받아 합을 구하는 프로그램을 작성하라. 사용자가 정수가 아닌 문자를 입력할 때 발생하는 InputMismatchException 예외를 처리하여 다시 입력받도록 하라.
import java.util.*;
import java.lang.*;
public class prac220530{
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
int intArray [] = new int [3];
int sum = 0, num;
System.out.println("정수 3개를 입력하시오");
for(int i=0;i<3;i++) {
System.out.print(i + ">>");
try {
num = scn.nextInt();
}catch (InputMismatchException e) {
System.out.println("정수가 아닙니다. 다시 입력하세요.");
scn.next();
i--;
continue;
}
sum += num;
}
System.out.println("합은 "+ sum);
}
}
Q. 문자열을 정수로 변환할 때 발생하는 NumberFormatException을 처리하는 프로그램을 작성하라.
import java.util.*;
import java.lang.*;
public class prac220530{
public static void main(String[] args) {
String stringArray [] = {"23","12","3.141592","998"};
int i=0;
try {
for(i=0;i<stringArray.length;i++) {
int j = Integer.parseInt(stringArray[i]);
System.out.println(j);
}
}catch(NumberFormatException e) {
System.out.println(stringArray[i]+"는 정수로 변환 불가.");
}
}
}
'Programming Language > Java' 카테고리의 다른 글
13장. 스레드와 멀티태스킹 (0) | 2022.06.03 |
---|---|
8장. 입출력 스트림과 파일 입출력 (0) | 2022.06.02 |
7장. 제네릭과 컬렉션 (0) | 2022.05.31 |
6장. 패키지 개념과 자바 기본 패키지 (0) | 2022.05.31 |