1. 반복문 (for문)

  (1) 형식 : 

for(초기식;조건식;증감식)

{

여러문장;

}

for문을 무한루프 돌리고 싶을때는 조건식을 생략하면 된다.

  (2) 예제

package exam;


public class ForSample {


public static void main(String[] args) {

// TODO Auto-generated method stub

int i, sum=0;;

for(i=1;i<=10;i++)

{

sum += i; //sum = sum + i

System.out.print(i);

if(i<=9) //1~9까지는 '+' 출력

System.out.print("+");

else{

System.out.print("="); //'='출력하고

System.out.print(sum); //덧셈 결과 출력

}

}


}


}





2. 반복문 (while문)

  (1) 형식 : 

초기식

while(조건식)

{

문장1; 문장2;

...

증감식;

}

while문을 무한루프 돌리려면 조건식을 참으로 만들어주면 됨 while(true)

  (2) 예제(프로그램3-2 소스코드, 실행결과)

package exam;


import java.util.Scanner;


public class ForSample {


public static void main(String[] args) {

// TODO Auto-generated method stub

//1~10 출력

Scanner sc = new Scanner(System.in);

System.out.println("정수를 입력하세요(0을 입력하면 결과가 출력됩니다) : ");

int i=0,num=0; //1.초기식

double sum = 0;

while((num = sc.nextInt()) != 0) //2.조건식

{

sum += num;

i++;

}

System.out.print("수의 개수는" + i + "개이며 ");

System.out.print("합은 "+ sum + "이며 ");

System.out.println("평균은 " + sum/i + "입니다.");

sc.close();

}


}





3. 반복문 (do~while문)

  (1) 형식


초기식

do

{

문장...

증감식

}while(조건식);


  (2) 예제 (소스코드, 결과, 주석:i가 1만 출력된 이유)


package exam;


import java.util.Scanner;


public class ForSample {


public static void main(String[] args) {

// TODO Auto-generated method stub

int i;

i=1; //1.초기식

do{

System.out.println(i);

i++; //3.증감식

}while(i>10); //2.조건식    /*i는 1만 출력된다 이유는 조건식이 거짓이 되므로 실행이 멈추기 때문.*/

}


}




4. 중첩반복문 예제(예제3-4 소스코드, 결과)


package exam;


import java.util.Scanner;


public class ForSample {


public static void main(String[] args) {

// TODO Auto-generated method stub

for(int i = 1 ; i < 10 ; i++){

for(int j=1 ; j<10 ; j++){

System.out.print(i + "*" + j + "=" + i*j);

System.out.print('\t');

}

System.out.println();

}

}


}




5. 반복문 + contnue문, break문 예제


package exam;


import java.util.Scanner;


public class ForSample {


public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner sc = new Scanner(System.in);

System.out.println("정수를 5개 입력하세요.");

int i;

int sum = 0;

for(i=0 ; i<5 ; i++)

{

int n = sc.nextInt();

if (n<=0) continue;

else sum += n;

}

System.out.println("양수의 합은 " + sum);

sc.close();

}


}



continue는 해당하는 조건에 부합되면 다음 단계로 넘어가고


package exam;


import java.util.Scanner;


public class ForSample {


public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner sc = new Scanner(System.in);

System.out.println("정수를 5개 입력하세요.");

int i;

int sum = 0;

for(i=0 ; i<5 ; i++)

{

int n = sc.nextInt();

if (n<=0) break;

else sum += n;

}

System.out.println("양수의 합은 " + sum);

sc.close();

}


}



break는 조건에 해당하면 반복문 자체를 빠져 나와 버리기 때문에 차이가 생긴다.


6. 배열 사용방법


1. 선언할때에는 배열의 크기를 지정하지 않는다.

2. 생성할때에는 new를 사용하여 복사하여 사용한다.

public class exArray1 {

public static void main(String[] args){

int intArray[]; //1.배열선언

intArray = new int[5]; //2.배열생성

int intArray1[] = new int[6]; //배열선언+생성 동시에 할 수 있다.

int intArray2[] = {1,2,3,4,5}; //배열을 초기화하면서 선언

int size = intArray2.length;

for(int k: intArray2)

//for~each문으로 배열 원소를 순서대로 읽어올수있음.

System.out.println(k);

for(int i=0;i<size;i++){

System.out.println("배열의 원소는 " + intArray2[i]);

}

}




7. 배열 사용예제


(1)합계,평균함수정의


package exArray;


public class exArray1 {

public static void main(String[] args){

int intArray[]; //1.배열선언

intArray = new int[5]; //2.배열생성

int intArray1[] = new int[6]; //배열선언+생성 동시에 할 수 있다.

int intArray2[] = {2,2,3,4,5}; //배열을 초기화하면서 선언

int size = intArray2.length;

for(int k: intArray2)

//for~each문으로 배열 원소를 순서대로 읽어올수있음.

System.out.println(k);

int n = sum(intArray2); //1. 배열함수 정의

System.out.println("합계는 : " + n);

double avg = avg(intArray2);

System.out.println("평균은 : " + avg);

/*for(int i=0;i<size;i++){

System.out.println("배열의 원소는 " + intArray2[i]);

}*/

}


private static double avg(int[] intArray2) {

double avg=0;

int sum=0;

for(int k : intArray2)

{

sum+=k;

avg = (double)sum/(double)intArray2.length;

}

return avg;

}


private static int sum(int[] intArray2) {

int sum=0;

for(int k : intArray2)

sum+=k;

return sum;

}


}



8. 2차원 배열예제 (소스, 결과, 주석)


package exArray;


public class ScoreAverage {


public static void main(String[] args) {

double score[][] = 

{ //행단위로 열의 값을 나열해서 사용

{3.3,3.4}, //1학년 1, 2학기 평점

{3.5,3.6}, //2학년 1, 2학기 평점

{3.7,4.0}, //3학년 1, 2학기 평점

{4.1,4.2} //4학년 1, 2학기 평점

};

double sum = 0;

/*이중 for문 year 0행 에서 term의 1열 2열 실행됨

바깥쪽의 for문의 1행이 고정되어 있을때 안쪽의 for문이 반복 실행됨.*/

for(int year=0;year<score.length;year++) //각 학년별로 반복

for(int term=0;term<score[year].length;term++) //각 학년의 학기별로 반복

sum += score[year][term]; // 전체 평점 합

int n = score.length; //배열의 행 개수, 4

int m = score[0].length; //배열의 열 개수, 2

System.out.println("4년 전체 평점 평균은 " + sum/(n*m));

}


}



9. 예외처리


개념 :  프로그램 실행 중 오동작이나 결과에 악영향을 미치는 예상치 못한 상황 발생을 예외라고 하고 이 예외를 처리하는 과정

형식 : try{예외가 발생할 가능성이 있는 실행문} catch(처리할 예외 타입 선언){예외 처리문} finally(예외 발생 여부와 상관없이 무조건 실행되는 문장) (finally 블록은 생략이 가능하다).


(1) 0으로 나눈 예외처리 예제(소스, 결과, 주석) 표3-1 예외 내용 참고


package example;


import java.util.Scanner;


public class DivideByZero {


public static void main(String[] args){

Scanner scanner = new Scanner(System.in);

int dividend; // 나뉨수

int divisor; // 나눗수

System.out.print("나뉨수를 입력하시오:"); 

dividend = scanner.nextInt(); // 나뉨수 입력

System.out.print("나눗수를 입력하시오:"); 

divisor = scanner.nextInt(); // 나눗수 입력

try{

System.out.println(dividend+"를 " + divisor + "로 나누면 몫은 "

+ dividend/divisor + "입니다.");

}

catch(ArithmeticException e){

System.out.println("0으로 나눌 수 없습니다.");

}

finally{

scanner.close();

}

}

}



예외 발생 타입(예외 클래스) 가 ArithmeticException인 경우 정수를 0 으로 나눌 때 발생함.


(2) 입력 오류를 처리하는 예제(소스, 결과, 주석) 표3-1 예외 내용 참고


package example;

import java.util.InputMismatchException;
import java.util.Scanner;

public class ex2 {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("정수 3개를 입력하세요");
int sum=0, n=0;
  for(int i=0; i<3; i++)
  {
  
  System.out.print(i+">>");
  
  try{
  n = scanner.nextInt(); // 정수 입력
  }
  catch(InputMismatchException a){
  System.out.println("정수가 아닙니다. 다시 입력하세요");
  scanner.next();
  i--;
  continue;
  }
  sum+=n;
  }
System.out.println("합은 " + sum);
scanner.close();
}

}

예외 발생 타입(예외 클래스) 가 InputMismatchException인 경우 Scanner 클래스의 nextInt()를 호출하여 정수로 입력받고자 하였으나 사용자가 정수가 아닌 다른 문자를 입력한 경우 발생한다.

'basic > Java 8' 카테고리의 다른 글

[Java] Exception  (0) 2018.08.07
5. 상속  (0) 2017.05.12
4. 클래스와 객체  (0) 2017.04.11
2. 자바 기본 프로그래밍  (0) 2017.03.14
1. 자바시작  (0) 2017.03.07

+ Recent posts