/*==========================================
■■■ 실행 흐름의 컨트롤 (제어문) ■■■
- break;
===========================================*/
//다음과 같은 처리가 아루어지는 프로그램을 구현한다.
//단 입력받는 정수는 1 ~ 1000 범위 안에서만 가능하도록 작성한다.
// 실행 예)
// 임의의 정수 입력(1 ~ 1000) : -10
// 임의의 정수 입력(1 ~ 1000) : 0
// 임의의 정수 입력(1 ~ 1000) : 2021
// 임의의 정수 입력(1 ~ 1000) : 10
// >> 1 ~ 10 까지의 합 : 55
// 계속하시겠습니다?(Y/N) : y
// 임의의 정수 입력(1 ~ 1000) : 100
// >> 1~ 100 까지의 합 : 5050
// 계속하시겠습니까?(Y/N) : N
// 계속하려면 아무 키나...
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Test064
{
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n; //사용자 입력값
int a, sum=0; //누적합 연산
char ch; //추가진행여부 묻는 입력값 Y N
while (true) //무한루프
{
do
{
System.out.print("임의의 정수 입력(1 ~ 1000) : ");
n = Integer.parseInt(br.readLine());
}
while (n<1 || n >1000); //반복을 수행할 조건
//초기화위치
sum = 0;
for (a=1; a<=n; a++)
{
sum += a;
}
System.out.printf("\n>> 1 ~ %d 까지의 합 : %d\n", n, sum);
// 1-1000까지의 수를 입력받아서 합을 출력함
System.out.print("계속하시겠습니까?(Y/N) : ");
ch = (char)System.in.read(); // y + \r + \n
//테스트)System.out.println(" 계속여부 : " + ch);
//ch=='Y' ch =='y' ch=='N' ch=='n'
//입력값이 y Y 가 아니다 라는 조건
//▶ch!='Y' ▶ch !='y'
//SCE (쇼트서킷에볼루션)
if (ch != 'y' && ch != 'Y')
{
// 반복문 →while(true)을 빠져나갈 수 있는 코드를 작성하는 것이 필요
// 위와 같은 의사표현을 했다면 그동안 수행했던 반복문을 멈추고 빠져나가야 한다.
break; // 멈춘다 + 감싸고 있는 가장 가까운 반복문을 빠져나간다.
}
System.in.skip(2); //System.in.read() 로 읽어들인 y + \r + \n 에서 \r ,\n을 제거하기 위한 코드
}//end white(true)
}//end main()
}//end class Test064
/*
임의의 정수 입력(1 ~ 1000) : -8
임의의 정수 입력(1 ~ 1000) : 1200
임의의 정수 입력(1 ~ 1000) : 100
>> 1 ~ 100 까지의 합 : 5050
계속하시겠습니까?(Y/N) : y
임의의 정수 입력(1 ~ 1000) : 10
>> 1 ~ 10 까지의 합 : 55
계속하시겠습니까?(Y/N) : Y
임의의 정수 입력(1 ~ 1000) : 100
>> 1 ~ 100 까지의 합 : 5050
계속하시겠습니까?(Y/N) : n
계속하려면 아무 키나 누르십시오 . . .
*/
쇼트 서킷
ch != 'y' && ch != 'Y' ▶▶ 앞의 조건식과 뒤의 조건식이 모두 true 여야 함. 'y'도 아니고 'Y'도 아니어야 한다.
|| (or) 을 하게 되면 안되므로 주의해야 한다.
/*==========================================
■■■ 실행 흐름의 컨트롤 (제어문) ■■■
- continue; → 해당 반복부분만 탈출하고
다음번 반복을 이어서한다. (뒷부분 무시하고 계속해라)
===========================================*/
// 실행 예)
/*
1 : 1
3 : 4
5 : 9
7 : 16
:
:
99 : 2500
결과 : 2500
*/
public class Test065
{
public static void main(String[] args)
{
int a, sum=0; // a → 값을 1씩 증가시켜나갈 변수, sum → 누적합을 담을 변수
for (a=1; a<=99; a++ )
{
if (a % 2==0) continue; //a가 2의 배수라면 반복문의 나머지 코드를 무시하고 반복문의 처음으로 돌아간다.
sum += a;
System.out.printf("%d : %d\n", a,sum);
}
}
}
/*
1 : 1
3 : 4
5 : 9
7 : 16
9 : 25
11 : 36
13 : 49
15 : 64
17 : 81
19 : 100
21 : 121
23 : 144
25 : 169
27 : 196
29 : 225
31 : 256
33 : 289
35 : 324
37 : 361
39 : 400
41 : 441
43 : 484
45 : 529
47 : 576
49 : 625
51 : 676
53 : 729
55 : 784
57 : 841
59 : 900
61 : 961
63 : 1024
65 : 1089
67 : 1156
69 : 1225
71 : 1296
73 : 1369
75 : 1444
77 : 1521
79 : 1600
81 : 1681
83 : 1764
85 : 1849
87 : 1936
89 : 2025
91 : 2116
93 : 2209
95 : 2304
97 : 2401
99 : 2500
계속하려면 아무 키나 누르십시오 . . .*/
/*==========================================
■■■ 실행 흐름의 컨트롤 (제어문) ■■■
- return ( 1. 값을 반환 2. 메소드 종료)
여기서 main() 메소드 종료이므로 프로그램 종료이다.
===========================================*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Test066
{
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n,s ;
System.out.print("임의의 정수 입력(10 이상) : ");
n = Integer.parseInt(br.readLine());
if (n<10)
{
System.out.println("10 이상의 정수를 입력해야 합니다!!!");
return; //메소드 종료를 의미하는 것이고 이는 여기서 메인메소드를 의미한다.
}
s=0;
for (int i=1; i<=n; i++)
{
s+=i;
}
System.out.println("결과 : " + s);
}
}
'📚Study Note > JAVA' 카테고리의 다른 글
[ JAVA ] 클래스와 인스턴스 ② 생성자 (Constructor) (0) | 2021.03.14 |
---|---|
[ JAVA ] 클래스와 인스턴스 ① (0) | 2021.03.14 |
[ JAVA ] for문을 활용해서 구구단출력, 별찍기 (0) | 2021.03.13 |
[ JAVA ] do while문, for문 (0) | 2021.03.13 |
[ JAVA ] while문 ② (0) | 2021.03.13 |