일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Java의정석
- 타입스크립트
- 자바스크립트
- php
- spring
- 리액트
- 자스코테
- 자바스크립트 코딩테스트
- javascript
- 정보처리기사실기정리
- 정보처리기사요약
- 자바의정석
- typescript
- 국비코딩
- 평일코딩
- 오라클
- 스프링
- 정보처리기사
- VUE
- 국비IT
- 정보처리기사실기요약
- 코딩테스트
- 정보처리기사실기
- 리액트네이티브
- ReactNative
- CSS
- Oracle
- 이안의평일코딩
- react
- 정보처리기사정리
- Today
- Total
이안의 평일코딩
JAVA의 정석 9일차 - 반복문 for 본문
2020.06.25(목)
1. 반복문 - for, while, do~while
=== 프로그래머의 사용빈도
for : 반복 횟수가 있는 경우에 주로 사용
(for문은 일정한 패턴이 있어야함)
while : 반복 횟수가 없는 경우에 주로 사용
===> for <=> while, 다중조건문 <=> 선택문
(언제든지 변경해서 쓸 줄 알아야함)
do~while : 조건을 나중에 검색 => 한 번 이상은 반드시 수행
1) for 형식
1.1부터시작 2.10될떄까지 3.증가
======= ======== =====
for(int i=1; i<=10; i++) {
반복 수행문장 : 10번을 수행하는 문장
}
==> 초기값, 조건식, 수행문장 수행, 증가식
=====================> 반복
= true => 반복
= false => 종료
==> 실제 형식
for(초기값 (변수) ; 조건(비교, 논리, 부정연산자) ; 증가(증감))
=> 반드시 (true/false)
=> 출력 ==> 1~10
for(int i=1; i<=10; i++)
출력 ==> 10~1
for(int i=10; i>=1; 1--) ==> sort
for(int i=1; i<=10; i++)
System.out.println(i);
=> for 실행순서
① ② ④
for(초기값; 조건식; 증감식) {
반복 수행문장 ③
}
1 ==> 2 ==> 3 ==> 4
2 ==> 3 ==> 4
2 ==> 3 ==> 4
=== 1 초기값은 한 번만 실행됨
=== false가 될 때까지 반복
주의점 : 조건식이 false가 없으면 => 무한루프가 된다
2) for 형식 차이
for(초기화 ; 조건식 ; 증감식) {
반복수행 문장
실행문장
}
=> 블럭 유무에 따라 결과가 달라짐
for(초기화 ; 조건식 ; 증감식)
반복수행 문장
실행문장
=> 블럭이 있는 for문은 반복수행 문장, 실행문장 둘 다 반복되고,
블럭이 없는 for문은 for문에 해당되는 반복수행 문장만 반복되며,
실행문장은 1번만 출력되고 반복되지 않는다.
3) for문 결과도출 후의 값
int i
for (i=1; i<=5; i++) {
}
i=? ->6이다. (6이되서 for문에서 빠져나갔기 때문에)
2. 자바제어문 활용
import org.jsoup.Jsoup;
import org,jsoup.nodes.Document;
import org.jsoup.select.Elements;
public class 자바제어문_활용 {
public static void main(String[] args) throws Exception {
Document doc=Jsoup.connect("https://movie.daum.net/premovie/released").get();
System.out.println(doc;
Elements title=doc.select("div.info_tit a.name_movie");
Elements grade=doc.select("div.info_tit em");
for(int i=0; i<title.size(); i++) {
System.out.println("==============");
System.out.println(title.get(i).text());
System.out.println(grade.get(i).text());
System.out.println("==============");
}
}
}
3. 연습문제
1) 구구단
import java.util.*;
public class 구구단 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int dan = 0;
System.out.print("단 입력 (2~9)>");
dan = scan.nextInt();
for (int i=1; i<10; i++)
System.out.printf("%d*%D=%d\n",dan,i,dan*i
}
}
2) 1~100까지의 합
public class 합 {
public static void main(String[] args) {
//변수 ==> 1~100까지 더한 값 => 누적 (통계낼 때 사용)
int sum = 0; // 누적 변수 (값을 누적함)
// i ==> 루프변수 (반복해서 수행하는 변수)
for (int i=1; i<=100; i++) {
sum+=i // sum=sum+i
System.out.printf("1부터 %d까지의 합:%d\n",i,sum);
}
}
}
sum = sum + i (sum=0, i=1) => sum=1
sum = sum + i (sum=1. i=2) => sum=3
sum = sum + i (sum=3, i=3) => sum=6
.
.
sum = sum + i (sum=4950, i=100) => sum=5050
3) 1~100까지의 짝수, 홀수의 합
public class 짝홀수합 {
public static void main(String[] args) {
int odd=0, even=0;
for (int i = 1; i<=100;, i++) {
if(i%2==0)
even+=i;
else
odd+=i;
}
System.out.println("짝수의 합:"+even);
System.out.println("홀수의 합:"+odd);
}
}
4) 1~100까지의 3의 배수의 합, 5의 배수의 합, 7의 배수의 합을 출력
public class 배수합 {
public static void main(String[] args) {
int a3=0, a5=0, a7=0;
for (int i=1; i<=100; i++) {
// 충돌되는 것이 있으면 단일 if 써야함. 3,5,7의 배수가 서로 겹치기 때문에
int (i%3==0)
a3+=i;
int (i%5==0)
a5+=i;
int (i%7==0)
a7+=i; //합
}
System.out.println("3의 배수의 합"+a3);
System.out.println("5의 배수의 합"+a5);
System.out.println("7의 배수의 합"+a7);
}
}
5) 100~999까지의 7의 배수의 갯수
public class 배수갯수 {
public static void main(String[] args) {
int count = 0; //초기화를 하지 않으면 ++가 안됨.
for (int i=100; i<=999; i++) {
if (i%7==0)
count++; //갯수
}
System.out.println("7의 배수의 갯수"+count);
}
}
6) 1-2+3-4+5-6+7-8+9-10 값 출력
public class 값출력 {
public static void main(String[] args) {
int sum = 0; //홀수일 때 더하기, 짝수일 때 빼기
for (int i=1; i<=10; i++) {
if (i%2==0) //짝수
sum-=i;
else //홀수
sum+=i;
}
System.out.println("1-2+3-4+5-6+7-8+9-10:"+sum);
}
}
7) ★★☆★★☆★★☆★★☆★★☆ 출력
public class 패턴출력 {
public static void main(String[] args) {
//초기값 주의 int i = 0; i<12로 하면 3의 배수에 0이 포함되므로 순서가 바뀌게 됨.
for (int i=1; i<=12; i++) {
if(i%3==0)
System.out.print("☆");
else
System.out.print("★");
}
}
}
8) 대소문자출력
public class 대소문자출력 {
public static void main(String[] args) {
char ch;
for (ch='A'; ch<='Z'; ch++) {
System.out.print(ch);
} //{} 블럭을 쓰면 변수 ch는 메모리에서 사라진다
// ch=90 ==>
System.out.print((char)('Z'+1));
System.out.print(ch); //다음문자 확인
System.out.println();
for (ch='a'; ch<='z'; ch++) {
System.out.print(ch);
}
System.out.println(ch); //{
for(int i = 10; i>=1; i--) {
System.out.print(i);
}
System.out.println();
System.out.println("==============");
for (int i=1, j=10; i<=10; i++,j--) { //변수는 2개 있어도 되지만 조건식은 1개만 써야함
System.out.println("i="+i+",j="+j);
}
}
}
9) updown 게임
=> 컴퓨터가 1~100 사이의 난수 발생
=> 사용자가 난수 맞추는 게임
힌트 => 높다, 낮다
=> 난수: 70
=> 사용자: 60 => 높은 숫자 입력하세요
=> 사용자: 75 => 낮은 숫자 입력하세요
1. 컴퓨터가 난수 발생 (1~100)
Math.random()
0.0~0.99*100 ==> 0.0~99.0 + 1
* (int)1.0~100.0
* ================ 2,3,4반복
* 2. 사용자 입력
* 3. 입력하면 => 힌트
* 4. 종료여부
* ================
import java.util.*;
public class updown게임 {
public static void main(String[] args) {
int com=(int)(Math.random()*100)+1; // 1~100사이 난수
// 난수 => 임의 수를 추출
Scanner scan = new Scanner(System.in);
int count=0;
for(;;) // 무한루프 => while(true)
{
//사용자 입력값을 받는다
System.out.print("1~100사이의 정수 입력:");
int user=scan.nextInt();
if(user<1 || user>100) {
System.out.println("잘못된 입력입니다!!");
continue; // 처음으로 다시 돌아간다
// for ==> 증가식으로 이동
}
// 정상적으로 입력이 된 상태
count++;
// 비교
if(com>user) {
System.out.println("입력된 값보다 높은 수를 입력하세요");
}
else if(com<user) {
System.out.println("입력된 값보다 낮은 수를 입력하세요");
}
else {
System.out.println("Game Over!!");
System.out.println("입력횟수:"+count);
// 종료
break; // for종료
}
}
System.out.println("프로그램 종료");
}
}
10) AaBbCcDd...Zz 출력
char c='a';
for(char ch='A'; ch<='Z'; ch++) {
System.out.print(ch+""+c++);
}
for(char ch='A'; ch<='Z'; ch++) {
System.out.print(ch+""+(char)(ch+32));
}
char c='a';
for(char ch='A'; ch<='Z'; ch++) {
System.out.print(ch+""+c);
c++;
}
11) 1,2,3,4,5 출력
for (int i=1; i<=5; i++) {
System.out.print(i);
if (i<5)
System.out.print(",");
}
12) 10->2진법
int su=10;
String s="";
for(;;) { //무한루프
int a = su%2;
s+=a+"";
su=su/2;
if(su==0)
break;
}
for (int i=s.length()-1; i>=0; i--) {
System.out.print(s.charAt(i));
}
'Back-end > Java' 카테고리의 다른 글
JAVA의 정석 11일차 - do~while, break, continue, 중첩 for문 (0) | 2020.06.29 |
---|---|
JAVA의 정석 10일차 - 반복문 while (0) | 2020.06.26 |
JAVA의 정석 8일차 - 다중조건문 & 선택문 (0) | 2020.06.24 |
JAVA의 정석 7일차 - 연산자정리 & 조건문2 (0) | 2020.06.23 |
JAVA의 정석 6일차 - 조건문 (0) | 2020.06.22 |