본문 바로가기
웹개발 수업/JAVA

웹개발_JAVA 5

by gugigugi92 2023. 1. 19.

▶반복문
▷for 문
int i = 0;    i>10;    i = i + 1
for(초기식; 조건식; 증감식){
           실행할 문장;
}

package controllStatement;

public class ForTest {

	public static void main(String[] args) {
		
		for(int i=0; i<10; i++) {
			System.out.println(i+1+".홍길동"); // 1~10까지 출력
		} 
		for(int i=0; i<10; i++) {
			System.out.println(10-i+".홍길동"); // 10~1까지 출력
		}
	}

}

출력결과

 


package controllStatement;

import java.util.Iterator;
import java.util.Scanner;


public class ForTask {
   public static void main(String[] args) {
//      브론즈
//      1~10까지 출력
	   	for(int i=0; i<10; i++) {
	   		System.out.println(i+1);
	   	} //i는 0부터 시작이라서 1부터 출력하기 위해 i+1
        }
        }

 

출력결과


  //브론즈
  //10~1까지 출력
 package controllStatement;
 public class ForTask {
   public static void main(String[] args) {
 for(int i = 0; i<10; i++) {
	    	System.out.println(10-i);//i는 처음 0 10부터 출력하기위해 10-
	    }
        }
        }

출력결과


package controllStatement;

public class ForTask {
   public static void main(String[] args) {
//      실버	   
//     1~10까지 합 출력	   
	   int total = 0;
	   for(int i=0; i<10; i++) {
		   total +=i+1; // i는 0부터 시작이여서 1부터 시작하려면 +1
	   }
	   	System.out.println(total);
	   }
       }

출력결과


//      1~n까지 합 출력(n은 입력받는다)
	   	Scanner sc = new Scanner(System.in); // 스캐너 사용 선언
	   	double input = 0; //입력받을 n
	   	int sum = 0; //1~n까지의 합 초기화
	   System.out.println("1~n까지의 합"); 
	   	input= sc.nextInt();//n입력
	   	for(int i=0; i<input; i++) {
		   sum+=i+1; //1는 0부터 시작이여서 1부터 시작하려면 +1
	   }
	   System.out.println(sum);

출력결과


//      골드
//      A~F까지 출력
	   	for(int i = 0; i<6; i++) {
	   		System.out.println((char)(i+65)); // 'A'의 ASKII 코드 값은 65 B는 66
	   										  // char 강제 형변환
	   	}

출력결과


//      A~F까지 중 C제외하고 출력(continue 사용하지 않기)
	   for(int i=0; i<6; i++) {
		   System.out.println((char)(i>1?(i+66):i+65));
		   //C는 i가 2일때이고 i가 2번째일때 65가아닌 66을 더해줘서 
		   //C부터는 +1을 출력해서 C가 D가되도록 하고 A,B는 그대로 출력
	   }

출력결과


//      다이아
//      0 1 2 3 0 1 2 3 0 1 2 3 출력
	   for(int i=0; i<12; i++) {
		   System.out.println(i%4); //0123은 4를 나눈 나머지(규칙성을 찾아야한다)
	   }

출력결과


package controllStatement;

import java.util.Scanner;

public class ForTask {
	public static void main(String[] args) {
//      aBcDe...Z 출력
//      A : 65
//      a : 97
		for (int i = 0; i < 26; i++) {
			System.out.print((char) (i%2==0?i+97:i+65));
		}//i=0(aA)일때 (소문자a) i!=1(bB)일때 나머지가 0이 아니니 (대문자B).....
        }
        }

출력결과


1. 초기식 
2. 조건식(true)
3. 실행할 문장
4. 증감식
5. 조건식(true)
6. 실행할 문장
7. 증감식
8. 조건식(false)

▷while문
while(조건식){
실행할 문장;
}

*while문 자주 쓰지 않는 상황 ▼▼▼▼

package controllStatement;

public class WhileTest {

	public static void main(String[] args) {
//		이름 10번 출력
		int count = 0;
		while(count != 10) { // 10이되면 나와라
			count ++;
			System.out.println(count+".홍길동");
			}
		

	}

}

출력결과

*while문을 자주 쓰는 상황 ▼▼▼▼

package controllStatement;

import java.util.Scanner;

public class WhileTask {
   public static void main(String[] args) {
      String title = "Q. 당신이 좋아하는 색을 선택하세요.";
      String menu = "1.빨간색\n2.노란색\n3.검은색\n4.흰색\n5.나가기";
      int choice = 0;
      Scanner scan = new Scanner(System.in);
      
      String red = "불같고 열정적이고 적극적이다.";
      String yellow = "발랄하고 밝고 귀엽고 개성있고 착하다.";
      String black = "묵묵하고 든든하고 냉철하고 멋지다.";
      String white = "천사같고 깔끔하고 정리를 좋아하고 배려심이 많다.";
      String errorMessage = "다시 시도해주세요.";
      String goodbyeMessage = "종료합니다.";
      String result = null;
      
      while(choice!=5) {
	      System.out.println(title);
	      System.out.println(menu);
	      
	      choice = scan.nextInt();
	      switch(choice) {
	      case 1:
	    	  result = red;
	    	  break;
	      case 2:
	    	  result = yellow;
	    	  break;
	      case 3:
	    	  result = black;
	    	  break;
	      case 4:
	    	  result = white;
	    	  break;
	      case 5:
	    	  result = goodbyeMessage;
	    	  break;
    	  
   }
      System.out.println(result);
   }
   }
}

출력결과


▷do ~ while문
 do{
실행할 문장;
}while(조건식);

package controllStatement;

import java.util.Scanner;

public class DoWhileTest {
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      String message = "1.통신 요금 조회\n2.분실 신고\n3.통신사 이동\n0.상담원 연결";
      int choice = 0;
      
      do { // 일단 실행하고 while문 드는 느낌(입력받는 값에 대해 적용하는 경우 적합(
         System.out.println(message);
         choice = sc.nextInt();
      }while(choice != 0);
   }
}

출력결과


무조건 한 번은 실행되어야 할 때 사용한다.

 

****for문과 while문 do while의 차이
- for :  몇 번 반복할지 알때
- while : 몇 번 반복할지 모를때
-do while : 무조건 한번은 실행해야 할때

 



기타 제어문
break : 즉시 해당 중괄호 영역을 탈출한다.
-if문 안에서 사용 시 if문을 탈출하지 않고 if 문을 감싸고 있는 중괄호 영역을 탈출한다.

continue : 즉시 다음 반복.
-아래의 코드를 실행하지 않기 위해서 사용한다.

package operTest;

public class Oper6 {
   public static void main(String[] args) {
//      1 ~ 10까지 중 8까지만 출력
//      for (int i = 0; i < 10; i++) {
//         System.out.println(i + 1);
//         if(i == 7) {
//            break;
//         }
//      }
      
//      1 ~ 10까지 중 4를 제외하고 출력
      for (int i = 0; i < 10; i++) {
         if(i == 3) {
            continue;// i==3이면 다음문장실행
         }
         System.out.println(i + 1);
      }
   }
}

출력결과


package controllStatement;

import java.util.Scanner;

public class WhileTask {
   public static void main(String[] args) {
      String title = "Q. 당신이 좋아하는 색을 선택하세요.";
      String menu = "1.빨간색\n2.노란색\n3.검은색\n4.흰색\n5.나가기";
      int choice = 0;
      Scanner scan = new Scanner(System.in);
      
      String red = "불같고 열정적이고 적극적이다.";
      String yellow = "발랄하고 밝고 귀엽고 개성있고 착하다.";
      String black = "묵묵하고 든든하고 냉철하고 멋지다.";
      String white = "천사같고 깔끔하고 정리를 좋아하고 배려심이 많다.";
      String errorMessage = "다시 시도해주세요.";
      String goodbyeMessage = "종료합니다.";
      String result = null;
      boolean flag = false;
      
//      while(choice!=5) { ///
//       while(true) { //
      	while(true) {////
	      System.out.println(title);
	      System.out.println(menu);
	      
	      choice = scan.nextInt();
//	      if(choice==5) {break;} //
	      switch(choice) {
	      case 1:
	    	  result = red;
	    	  break;
	      case 2:
	    	  result = yellow;
	    	  break;
	      case 3:
	    	  result = black;
	    	  break;
	      case 4:
	    	  result = white;
	    	  break;
	    	  
//	      case 5:                ///
//	    	  result = goodbyeMessage;
//	    	  break;
	      case 5: 	 ////
	    	  result = goodbyeMessage;
	    	  flag=true; //5일때 flag가 true
	    	  break;
	    	   
   }
      System.out.println(result);
      if(flag) {break;}//// flag가 true면 while문 빠저나옴
   }
   }

}

 



배열 : 저장공간의 나열
1.
변수를 여러 개 선언하면 이름도 여러 개 생긴다.
이때 각 저장공간을 관리하기 불편하다.
따라서 n칸 배열을 한번만 선언하면 저장공간도 n개 생기고,
이름도 한개이기 때문에 관리하기 편하다.

2.
규칙성이 없는 값에 규칙성을 부여하기 위해서

배열의 선언
자료형[] 배열명 = {값1, 값2,....}; // 어떤 값을 넣을지 알 때 사용
자료형[] 배열명 = new 자료형[칸수]; // 어떤 값을 넣을 지는 모르나, 몇 칸 만들지는 알 때 사용
자료형[] 배열명 = null; // 어떤 값을 넣을지도 모르고 몇 칸 만들지도 모를 때 사용한다.

※ new: heap 메모리에 할당, 초기값으로 자동 초기화
※ null: 주소의 초기값, 어떤 주소를 넣을 지 모를 때 작성하는 값
※ 자바에서 배열은 항상 heap(동적 메모리)에 할당되기 때문에 메모리 상으로는 동적 배열만 존재한다.


배열의 구조
   int[] arData = {3, 5, 1, 2, 8};

   arData라는 이름의 저장공간은 한 개 만들어지며, 여기에는 한 개의 값만 담을 수 있다.
   5개의 값을 담기 위해서는 5칸이 필요하며, 이는 Heap 메모리에 할당된다. 5칸의 저장공간 중
   첫 번째 저장공간의 주소값이 arData 저장공간으로 들어가며, 다음 주소에 접근하기 위해서는
   + n을 한다. 예를 들어 arData + 2는 1이라는 값이 담긴 주소값이 되며,
   *(arData + 2)는 해당 주소에 가서 읽어온 1이라는 값이 된다. JAVA에서는 직접 주소에 접근하는
   연산자가 없기 때문에 위와 같은 식을 []로 치환하여 사용하며, arData[2]로 사용한다.
   각각의 방 번호는 index라고 부르며, 배열은 시작주소를 가지고 있기 때문에 인덱스 번호는 항상 0부터 시작된다.

length 
배열을 선언하면 length라는 상수가 선언되고, 해당 배열의 길이가 담긴다.
배열명.lenght로 사용하게 된다.

배열의 사용
int[] arData = new int[5]; // 저장공간
arData[0] = 10; //저장공간
arData[0]+9;// 값
System.out.println(arData); // 주소값
arData[2] = arData[0] + arData[1] // 저장공간, 값
System.out.println(arData[5]); // 오류

package arrayTest;

public class ArTest1 {
   public static void main(String[] args) {
      int[] arData = {2, 4, 5, 6, 8};
      
      System.out.println(arData);   //[I@7637f22 [는 배열 I는 int의미
      System.out.println(arData.length); //5
      
      System.out.println("=============================");
      
      for(int i=0; i<arData.length; i++) {
         System.out.println(arData[i]);
      }
      
      System.out.println("=============================");
      
//      5, 4, 3, 2, 1을 각 방에 넣고 출력
      for (int i = 0; i < arData.length; i++) {
         arData[i] = 5 - i; // arData에 새로운 값을 넣음
         System.out.println(arData[i]);
      }
      
      for (int i = 0; i < arData.length; i++) {  //TODO 위에 for문에서 출력해도 같은 결과가 나오는데 for 문을 하나 더 쓴것과 안쓴것의 차이가 무엇?
         System.out.println(arData[i]);
      }
      
   }
}

출력결과

package arrayTest;

public class ArTest2 {
   public static void main(String[] args) {
      int[] arData = null;
      
//      arData = new int[5]; //-> 칸만 할당 0,0,0,0,0
      arData = new int[] {1, 2, 3, 4, 5}; 
      
      for (int i = 0; i < arData.length; i++) {
         System.out.println(arData[i]);
      }
   }
}

출력결과

'웹개발 수업 > JAVA' 카테고리의 다른 글

웹개발_JAVA 7  (0) 2023.01.27
웹개발_JAVA 6  (2) 2023.01.25
웹개발_JAVA 4  (0) 2023.01.18
웹개발_JAVA 3  (0) 2023.01.17
웹개발_JAVA 2(변수,상수,출력메서드)  (0) 2023.01.13

댓글