# C_Dowhile
package com.kh.chap02.loop;
public class C_Dowhile {
/*
* do-whlie문
* 별도의 조건검사없이 무조건 1회는 실행!
* 조건이 맞지 않더라도 한 번은 수행
*
* [표현법]
* 초기식; //필수는 아님
*
* do {
*
* System.out.println("한번은 무조건 출력");
* 증감식;//필수는 아님
*
* } while(조건식);
*
* while문은 처음 수행할 때도 조건식 검사 후 true여야 실행
* do-while은 첫 실행은 별도의 조건검사 없이 무조건 한 번 실행!
* While(false)
*/
public void method1() {
int num = 1;//초기식
//애초에 조건이 맞지 않아도 무조건!!! 한번은 실행
do {//do실행후 whlie문으로 가서 조건이 true면 여기로 옴
System.out.println("무조건 한 번은 시도");
} while (num==0);
}
}
# A_Break
package com.kh.chap3;
import java.util.Scanner;
public class A_Break {
/*
* break : break문을 만나는 순간 "가장 가까운 반복문"을 빠져나간다.
* 해당 break문이 속해있는 반복문 "한겹"만 빠져나감
*
* *주의할 점 : switch문 안에 break;와 다른 개념
* switch문 내부에 있는 break는 해당 switch문을 빠져나가는 용도일뿐.
*/
public void method1() {
//매 번 반복적으로 새롭게 랜덤값(1~100)을 생성해서 출력 => 무한하게
//1. for(;;)
//2. while(true)
//반복문을 돌다가 생성된 랜덤값이 홀수일 경우 반복문을 빠져나가게 할 것!
for(;;) { //for문 시작
int random = (int)(Math.random() * 100) +1;
if (random %2 ==1) {
System.out.println("반복문 탈출");
break; //반복문의 끝으로 빠져나감
}
System.out.println(random);
} //for문 끝
}
public void method2() {
//매번 사용자에게 문자열을 입력받은 후
//해당 문자열의 길이를 출력하자!
//단, 사용자가 "exit"을 입력할 경우 반복문을 빠져나가게 해주자.
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("문자열을 입력해주세요> ");
String str = sc.nextLine();
if(str.equals("exit")) {
break; //나랑 제일 가까운 반복문을 빠져나감
}
System.out.println(str.length());
}
}
/*
* 1. 사용자로부터 한 개의 값을 입력받아 1부터 그 숫자까지의 모든 숫자를 거꾸로 출력하세요.
* 단, 입력한 수는 1보다 크거나 같아야 합니다.
* 1미만의 숫자가 입력됐다면 "1이상의 숫자를 입력하세요."가 출력되면서 다시 사용자에게 입력받도록하세요.
*
* ex)
*
* 1이상의 숫자를 입력하세요:4
* 4 3 2 1
* 1이상의 숫자를 입력하세요:0
* 1이상의 숫자를 입력해주세요.
* 1이상의 숫자를 입력하세요:
*
*/
public void method3() {
Scanner sc = new Scanner(System.in);
int num;
do {
System.out.println("1이상 숫자를 입력하세요:");
num = sc.nextInt();
} while (num<1);
for (;num > 0; num--) { //제어변수 썼던거 사용하므로 따로 지정하지 않음.
System.out.println(num+" ");
}
}
/*
* 사용자로부터 시작 숫자와 공차를 입력받아
* 일정한 값으로 숫자가 커지거나 작아지는 프로그램을 만들어보기
* 단, 출력되는 숫자는 총 10개입니다.
* *공차는 숫자들 사이에 일정한 숫자의 차가 존재하는 것을 말한다.
*
* 시작 숫자: 4
* 공차: 3
* 4 7 10 13 16 19 22 15 28 31
*
*
*/
public void method4() {
//첫 출력:시작숫자
//두번째 출력: 시작숫자와 공차를 더한 sum
//세번째 출력: sum += gongcha
//네번째 출력: sum에 공차를 더한 sum
Scanner sc = new Scanner(System.in);
System.out.println("시작숫자를 입력해주세요.>");
int num = sc.nextInt();
System.out.println("공차를 입력해주세요.>");
int gongcha = sc.nextInt();
int sum = num;
String str = "";
for(int a = 1; a<=9; a++) {
sum += gongcha;
str += sum + " ";
}
System.out.println(num + " " + str); //쉬운방법
//어려운방법
//사용자가 입력한 값: x
//공차: y
//x+y^2
for (int i = 0; i<10; i++) {
System.out.printf("%d", num + (gongcha*i));
}
}
// 매번 사용자로부터 숫자를 입력받고
// 해당 숫자가 음수면, "프로그램을 종료합니다"라는 문구를 출력하고 종료시켜보세요.
public void method5() {
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("숫자를 입력해주세요.>");
int num = sc.nextInt();
if(num<0) {
System.out.println("프로그램을 종료합니다.");
break;//또는 return;
}
}
}
}
# B_continue
package com.kh.chap03;
import java.util.Arrays;
import java.util.Scanner;
public class B_continue {
/*
* continue : 반복문 안에서 쓰이는 구문(break 친구)
*
* continue를 만나면 그 뒤에 어떤 구문이 있던지 실행하지 않고 pass
* 가장 가까운 반복문으로 올라가라는 것을 의미함.
*
*
*
*
*
*/
//방법1. 반복문을 1씩 증가시키면서 돌리는데, 홀수일 경우만 출력하도록 조건문을 사용한다.
//if (i%2==1) System.out.println(i);
//방법2. 증감식을 매번 2씩 증가시키면 됨.
//for(int i = 1; i<=10; i+=2)
//방법3. continue사용
public void method1() {
for (int i = 1; i <=10; i++) {
//1부터 10까지 홀수만 출력
//1 3 5 7 9
if(i%2==0) {
continue;
}
System.out.println(i + " "); //1 2 3 4 5 6 7 8 9 10
}//continue를 만나면 sout를 만나지 않고 이곳으로 와 for문을 반복함.(이어서 할건지)
//break는 반복하지 않고 끝냄.
}
public void method2() {
//조건 1, 1부터 100까지의 총 합계를 구해서 출력
//조건 2, 단, 7의 배수값만 빼고 더하기
/* 조건1
int sum = 0;
for (int i = 1; i<=100; i++) {
sum += i;
}
System.out.println("합계: " + sum);
*/
//조건 2포함
int sum = 0;
for (int i = 1; i<=100; i++) {
if(i%7==0) {
continue;
}else {
sum += i;
}
}
System.out.println("합계: " + sum);
}
public void method3() {
//3칸짜리 정수 배열을 만들고 숫자 입력받기
//int[] arr = new int[3];
// 1~100까지의 숫자만 입력받기
//만약에 범위를 넘어서 숫자를 입력한다면, "다시입력하세요"라고 출력한 뒤 다시 입력받기
int[] arr = new int[3];
Scanner sc = new Scanner(System.in);
for(int i = 0; i<arr.length; i++) {
System.out.println("숫자를 입력해주세요:");
int temp = sc.nextInt();
if (0 >= temp || 100 < temp ) {
System.out.println("다시 입력하세요.");
i--; //i++하기 전 i를 미리 감소시켜줌. > 잘못입력한 값을 원상태로 돌려주기
continue;
}
arr[i] = temp;
}
System.out.println(Arrays.toString(arr));
}
}
package com.kh.array;
import java.util.Arrays;
import java.util.Scanner;
public class A_Array {
//변수(Varriable)
//메모리(RAM)에 데이터값을 저장하기 위한 공간
// 변수: 하나의 공간에 하나의 값만 담을 수 있음.
//1.값이 바뀔 수 있다.
//2.크기가 정해져있다.
//3.형변환이 가능하다.
//4. stack메모리 -> 기본자료형
//5. 코드블록 안에서 선언되고 사용된다.
//6. 연산이 가능하다
//7. 초기화는 한 번만 가능하다.
//8. 자료형이 지정되어있다.
//9. 식별자를 붙여서 사용한다.
//10. 공간이 하나다. => 하나의 값만 저장이 가능하다.*****
//11. 참조형은 주소값을 저장한다.
// 배열 (Array): 하나의 공간에 여러개의 값을 담을 수 있음
// 단, "같은 자료형의 값들"이여야 함.
// => 배열의 각 인덱스 자리에 실제 값이 담김 *** 인덱스는 "0"부터 시작함.
public void method1() {
//배열 왜 써야할까?
//변수만 이용해서 프로그래밍을 하면?
//값이 늘어날 떄마다 변수를 만들어서 기록을 하고 싶음.
// ctrl + / 주석 처리
/*
int num1 = 1;
int num2 = 2;
int num3 = 4;
int num4 = 7;
int num5 = 11;
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
System.out.println(num4);
System.out.println(num5);
int sum = 0;
for (int i = 1; i <= 5; i++ ) {
//sum += numi
}
//sum = num1 + num2 + num3 + num4 + num5; // 하나하나 다 더해줌 하지만 10000개가된다면?
//해결: 배열 => 반복문 사용 가능!
*/
//1. 배열 선언
/*
* 변수의 경우엔?
* 자료형 변수식별자;
*
* 배열 선언법
* 1) 자료형 배열식별자[];
* 2) 자료형[] 배열식별자;=> 주로 사용
*/
/*
int a;//변수 선언!
int arr1[]; // 1번 방법으로 int형 배열을 선언!
int[] arr2; // 2번 방법으로 int형 배열을 선언!
*/
//2. 배열 할당
/*
* 이 배열에 몇 개의 값이 들어갈지 배열의 크기를 정해주는 과정
* 지정한 갯수만큼 값이 들어갈 공간이 만들어짐.
*
* [표현법]
* int[] arr; //정수형 배열 arr이라고 읽음
* arr = new int[5]; //5칸짜리로 할당이 됨.
* int[] arr2 = new int[5]; // 선언과 동시에 할당.
*
* heap에 int를 넣을 수 있는 5개의 공간이 생김
* 배열은 참조형
* 참조형 : new
*
*/
int[] arr1;
arr1 = new int[15];
int[] arr2 = new int[5];
// 3. 배열의 각 인덱스에 값 대입
/*
*[표현법]
*배열이름[인덱스] = 값; //0부터 시작
*/
arr2[0] = 1;
arr2[1] = 2;
arr2[2] = 4;
arr2[3] = 7;
arr2[4] = 11;
System.out.println(arr2[0]);
System.out.println(arr2[1]);
System.out.println(arr2[2]);
System.out.println(arr2[3]);
System.out.println(arr2[4]);
//변수랑 차이가 없네?
int sum = 0;
for (int i = 0; i<arr2.length; i++) {
//System.out.println(arr2[i]);
sum += arr2[i];
System.out.println(sum); //합계도 가능!
}
//배열의 가장 큰 장점: 반복문을 사용 가능
}
public void method2() {
//String형 배열
//1. 배열의 선언과 할당 names 30칸짜리
String[] names = new String[30];
//2. 배열의 인덱스에 값을 입력
names[0] = "강매*";
names[1] = "강정*";
names[2] = "고예*";
names[3] = "김광*";
names[4] = "김동*";
names[5] = "김세*";
names[6] = "김승*";
names[7] = "김휘*";
names[8] = "박세*";
names[9] = "박승*";
names[10] = "박유*";
names[11] = "박혜*";
names[12] = "서지*";
names[13] = "송누*";
names[14] = "신경*";
names[15] = "오주*";
names[16] = "유인*";
names[17] = "이상*";
names[18] = "이연*";
names[19] = "이영*";
names[20] = "이유*";
names[21] = "이충*";
names[22] = "이한*";
names[23] = "임선*";
names[24] = "주성*";
names[25] = "주승*";
names[26] = "최정*";
names[27] = "황대*";
names[28] = "황승*";
names[29] = "임수*";
//names[100] = "이승*";//문법적으론 맞게 잘 썼지만, 인덱스의 길이 바깥에 있음.
//ArrayIndexOutBound : 100 <= 이유
//배열의 인덱스 범위를 벗어났다
//at com.kh.array.A_Array.method2(A_Array.java:166)<=여기서 인덱스 범위 벗어났음을 알려줌
System.out.println("name배열의 크기: " + names.length);
for(int i = 0; i<=names.length/*==정수형 30*/-1; i++) {
//배열의 크기는 30으로 할당했기 떄문에 0부터 names.length는 30 즉 31개가 됨 => 30번째 인덱스를 찾는 오류발생
System.out.printf("출석번호: %d번 %s \n",i+1,names[i]); //문법적으로는 맞게 씀
}
}
public void method3() {
//int형 배열을 선언하고
//다섯칸을 할당하고
//임의의 정수 다섯개를 대입하여
//반복문을 이용해 합계 출력하기
int[] arr = new int[5];
arr[0] = 5;
arr[1] = 15;
arr[2] = 439634;
arr[3] = 54545;
arr[4] = 3434;
int sum=0;
for(int i = 0; i<=arr.length-1; i++) {
sum += arr[i];
}
System.out.println(sum);
}
public void method4() {
//1.사용자로부터 입력을 통해 배열에 값을 담기
//다섯칸 짜리로(정수)
int[] nums = new int[5];
Scanner sc = new Scanner(System.in);
for(int i =0; i<nums.length; i++) {
System.out.println("정수를 입력해주세요.>");
nums[i] = sc.nextInt();
System.out.println("nums라는 배열의" + i + "번째 인덱스에 들어가는 값" + nums[i]);
}
//System.out.println(Arrays.toString(nums));
//2.해당배열에서 가장 작은값 , 즉 최소값을 구하는 기능을 만들어보자.
int min =nums[0];
for(int i = 0; i<nums.length; i++) {
if(nums[i]<min) {
min=nums[i];
}
}
System.out.println("최소값: " + min);
}
}
+

* 배열을 선언하면, new(참조변수)로 heap 영역에 인덱스 영역을 만들고, 주소를 갖게됨. stack영역에는 값이 저장되는 것이 아닌, 호출하게 되면 stack이 가르키는 heap영역으로 가 값을 조회,변경, 입력 할 수 있는 것.
'클라우드 융합 Full-stack 웹 개발자 양성과정 > Java' 카테고리의 다른 글
프로그래밍 언어응용-객체3, 4 (0) | 2022.09.25 |
---|---|
프로그래밍 언어응용-배열, 객체1(캡슐화) (1) | 2022.09.25 |
프로그래밍 언어응용-if else문, switch, for, while (1) | 2022.09.25 |
프로그래밍 언어응용-연산자, if문 (1) | 2022.09.25 |
프로그래밍 언어응용-변수2 (1) | 2022.09.25 |