//for loop을 이용한 여러가지 프로그램을 만들어보자
//1. 사용자가 숫자 1개를 입력하면 1부터 그 숫자까지의 합을 구해주는 프로그램
//2. 사용자가 숫자 2개를 입력하면 작은수~큰수까지 합을 구해주는 프로그램
//3. 사용자가 숫자 1개를 입력하면 1부터 그 숫자까지의 곱을 구해주는 프로그램
import java.util.Scanner;
public class Ex11For {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("==1번==");
System.out.println("숫자하나를 입력해주세요:");
int number = scanner.nextInt();
//근데 for loop 안에다가 변수를 만들면?
//해당 변수는 유효범위가 그 for loop안이 된다
//따라서 합이 밖에서는 유지가 안되니깐 출력할 수 없다
//그러면 어떻게 해결해야 할까?
//그러면 밖에서 만들면 된다
int sum = 0;
//number: 5
//i: 1
//sum:0
for(int i = 1; i <= number; i++) {
//sum에 현재값에 i를 더해주면 되겠지
//sum = sum + i;
//위의 현재값에 산술 연산을해서 그 결과값을 다시
//해당 변수에 넣는것은 우리가 줄여서 쓸 수 있다
sum += i;// 왼쪽의 코드는 sum = sum +i; 를 줄여서 쓴것
}
System.out.println("1부터"+number+"까지 합은:"+sum);
System.out.println("==2번==");
System.out.print("첫번째 숫자를 입력하세요:");
int firstNumber = scanner.nextInt();
System.out.print("두번째 숫자를 입력하세요:");
int secondNumber = scanner.nextInt();
//만약 firstNuber가 secondNuber보다 크면?
//i = secondNumber; i<= firstNumber
//만약 secondNumber가 firstNumber보다 크면?
//i = firstNumber; i<=secondNumber
//이렇게 for문이 잡혀야되는데
//for문을 두번 쓰는게 쉬울까
//아니면firstNumber와 secondNumber의 값을 바꿔쓰는게 쉬울까?
sum = 0;
//만약 firstNumber가 secondNumber보다 크면
//두개의 값을 서로 교환해준다
if(firstNumber > secondNumber) {
//프로그래밍에서 두 변수의 값을 반대의 값으로 바꿀 때에는
//항상 임시로 한 변수의 값을 가지고 있을 임시저장소가 필요하다
//왜냐하면 프로그래밍에서 코드는 절대 동시에 일어나는게 아니라
//위에서 아래로 순차적으로 일어나기 때문
//따라서 임시 저장소가 없이 서로의 값을 바꿀 수는 없다.
int temp = firstNumber;
firstNumber = secondNumber;
secondNumber = temp;
}
for(int i = firstNumber ; i<=secondNumber ; i++) {
sum+=i;
}
System.out.println(firstNumber+"부터"+secondNumber+"까지의 합:"+sum);
//3. 사용자가 숫자 1개를 입력하면 1부터 그 숫자까지의 곱을 구해주는 프로그램
System.out.println("==3번==");
sum = 1;
System.out.print("숫자를 입력해주세요:");
number = scanner.nextInt();
for(int i = 1; i <= number; i++) {
// sum = sum * i;
sum *= i;
}
System.out.println("1부터"+number+"까지의 곱은"+sum);
scanner.close();
}
}