▶반복문
▷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 |
댓글