코딩 기록들
[Java Programming] 3.1 실행흐름 제어 - 조건문 (while, for) 본문
while : 조건에 따라 반복할 때
for : 반복횟수를 알고싶을 때
whlie
while(조건) {
반복될 코드 블럭
}
- 잘 안씀 (잘못쓰면 application이 죽어버림)
- 설계가 잘된 솔루션은 wihle 안씀
- 조건 : 비교연산자, 논리연산자, 불린값 자체가 들어갈수 있음
- { } 안의 내용 반복하는것 -> 언제까지 ? (조건)의 값이 false가 될때까지
public static void main(String[] args) {
int i = 0;
System.out.println(++i);
System.out.println(++i);
System.out.println(++i);
System.out.println(++i);
System.out.println(++i);
System.out.println(++i);
System.out.println(++i);
System.out.println(++i);
System.out.println(++i);
System.out.println(++i);
}
//이렇게 반복되는 코드를 아래처럼 while문을 사용해서 줄일수있음
public static void main(String[] args) {
int i = 0;
while(i < 10) {
System.out.println(++i);
}
}
while반복문은 무한반복을 위해 사용됨
- 종료조건이 없는 무한반복 예제
- Ctrl + shift + esc -> 작업관리자 확인하면 CPU가 엄청 올라가있는것을 확인할 수 있음
public static void main(String[] args) {
int i = 0;
while(true) { // 반복 조건이 true이므로 무한히 반복
System.out.println(++i);
}
}
업다운게임 - while문 사용해서 만들어보기
Scanner : 콘솔에 입력한 값을 변수로 사용할 수 있도록 해주는 용도
변수선언
public static void main(String[] args) {
// Ctrl + shift + o -> import 단축키
// 키보드의 입력을 변수로 받아올수있도록 도와주는 코드
Scanner keyboard = new Scanner(System.in);
//난수 생성(0.0000000)
double randomNumber = Math.random();
//난수를 0~99 사이의 정수로 변환
int answer = (int) (randomNumber * 100);
//사용자가 입력하는 값을 할당받을 변수 선언
int value = 0;
while문을 사용하지 않았을때 -> 숫자 한번만 입력하고 Up! / Down! / 정답입니다 중 하나만 출력됨
// 사용자에게 숫자를 입력하라고 알려준다
System.out.println("숫자를 입력하세요.");
//사용자가 keyboard변수를 이용해 숫자를 입력한 후
// enter를 입력하면 value변수에 값이 할당됨
value = keyboard.nextInt();
//컴퓨터가 만든 난수와 사용자가입력한 숫자가 일치하는지 확인하고
//일치한다면 '정답입니다' 출력
if(answer == value) {
System.out.println("정답입니다");
}
//컴퓨터가만든 난수와 사용자가입력한숫자 비교했을때
//사용자가입력한값이 더 작다면 'Up!" 출력
else if (answer > value) {
System.out.println("Up!");
}
// 컴퓨터가 만든 난수와 사용자입력숫자 비교시
//일치하지도않고, 사용자가 입력한값이 더 작지 않다면
//"Down!" 출력
else {
System.out.println("Down!");
}
위 코드를 while문을 써서 무한반복되게 만들면
while(true) {
System.out.println("숫자를 입력하세요.");
//사용자가 keyboard변수를 이용해 숫자를 입력한 후
// enter를 입력하면 value변수에 값이 할당됨
value = keyboard.nextInt();
//컴퓨터가 만든 난수와 사용자가입력한 숫자가 일치하는지 확인하고
//일치한다면 '정답입니다' 출력
if(answer == value) {
System.out.println("정답입니다");
break; //무한반복 종료시킴
}
//컴퓨터가만든 난수와 사용자가입력한숫자 비교했을때
//사용자가입력한값이 더 작다면 'Up!" 출력
else if (answer > value) {
System.out.println("Up!");
}
// 컴퓨터가 만든 난수와 사용자입력숫자 비교시
//일치하지도않고, 사용자가 입력한값이 더 작지 않다면
//"Down!" 출력
else {
System.out.println("Down!");
}
}
For
while vs for
while : 무한반복 (반복의 경계가 없음. 끝날지점 알 수 없음)
for : 범위반복 (반복의 범위가 정해져있음(지정한 범위))
- for문작성시 주의할점 : 초기화식에서 루프카운트 변수 선언할때 부동소수점 타입을 사용하지 말것
for(1️⃣초기화식; 2️⃣반복조건; 4️⃣증감식) {
3️⃣반복할 코드
}
1️⃣초기화식 제일 먼저 실행됨
2️⃣반복조건 평가 후 : true 라면 -> 3️⃣반복할 코드 실행시킴. 실행문 모두 실행되면-> 4️⃣증감식 실행 -> 2️⃣반복조건 평가
flase 라면: for내부 실행하지않고 끝남
public static void main(String[] args) {
// for안의 변수 i는 for의{} 범위에서만 사용할수있다
for(int i = 1; i < 11; i++) { // i<11 이 true 일동안 {}코드블록 실행
System.out.println(i);
}
}
초기값 : 변수의 정의와 할당 (i값은 1부터 시작)
반복조건 : 비교연산자 (i값이 11보다 작을 동안 반복)
증감식 : 단항연산자 (i값은 반복할때마다 1씩 증가)
0부터 100중 짝수만 출력하는 예제
// 증감식을 2씩 증가시키기 (i=0으로 시작 -> 이런식으로는 안 푼다
for (int i = 0; i < 101; i += 2) {
if (i>0) {
System.out.println(i);
}
}
//-> 이런식으로 풀것
for(int i = 1; i < 101; i++) {
if(i % 2 == 0) {
System.out.println(i);
}
}
구구단 예제
//구구단 2~9 반복
for(int i = 2; i < 10; i++) {
//구구단의 배수를 사용하기 위해 반복 : 1~9까지 반복
for(int j = 1; j < 9; j++) {
// 2 X 1 = 2 형태로 나오도록 출력
System.out.println( i + "X" + j + "=" + (i * j));
}
}
1부터 100까지 합 구해서 출력
int one2Hun = 0;
for( int i = 1; i < 101; i++) {
one2Hun += i;
}
System.out.println(one2Hun);
1부터 100 중 홀수의 합 구해서 출력
방법1 (증감식에 i++가 아닌 다른 식(ex, i+= 2)이 들어가는 형태는 안씀)
int oddOne2Hun = 0;
for( int i = 1; i < 101; i+= 2) {
oddOne2Hun += i;
}
System.out.println(oddOne2Hun);
방법2 (이렇게 i++ 하는 방법으로 사용하는것이 바람직함)
int oddOne2Hun1 = 0;
for(int i = 1; i < 100; i ++) {
if (i % 2 == 1) {
oddOne2Hun1 += i;
}
}
System.out.println(oddOne2Hun1);
1부터 100중 3,5,6 모두의 배수만 출력
for( int i = 1; i < 101; i++) {
if (i%3 == 0 && i%6 == 0 && i%5 == 0) { // 논리식은 한줄에 많이써도 됨
System.out.println(i);
}
}
* 1개부터 5개까지 줄바꿔서 나오게 출력
for( int i = 1; i < 6; i++) {
for ( int j = 1; j <= i; j++) {
System.out.print("*"); // 옆에 나란히 *** 출력하도록
}
System.out.println(); // enter 치는(줄바꿈) 용도
}
print 관련 코드
* 출력 후 엔터
System.out.println("*");
* 출력 (이후 엔터 없음, 다음 입력값은 오른쪽에 * 이 붙게 됨)
System.out.print("*");
엔터치는(한줄 띄는) 용도
System.out.println();
'Java' 카테고리의 다른 글
[Java Programming] 4.1 (반환하는) 메소드 (0) | 2024.01.22 |
---|---|
[Java Programming] 3.2 메소드 (0) | 2024.01.19 |
[Java Programming] 2.2 실행흐름 제어 - 조건문 (if~else if ~ else, Switch) (0) | 2024.01.18 |
[Java Programming] 2.1 연산자(산술, 비교, 논리 연산자) (0) | 2024.01.18 |
[Java Programming] 1.3 자바 프로그래밍 기초(연산자) (0) | 2024.01.17 |