Full Stack 교육 회고록
8/10 [java] - 반복문(for문)
순두부 호랑이
2022. 8. 10. 12:45
728x90
SMALL
1. 사용자가 입력한 아이디가 "smhrd"이고 비밀번호가 "1234"인 경우만 로그인 될 수 있도록 하고 그렇지 않은 경우에는 로그인 할 수 없는 로그인 프로그램을 작성하시오.(단,입력기회는 3번)
package while문;
import java.util.Scanner;
public class ex로그인 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int cnt =0; //틀린 개수 저장할 변수
String id = "";
String pw = null; //레퍼런스 타입은 null o (비어있다!)
//int i = null; // 기본타입은 null x
do {
System.out.print("아이디 : ");
id = sc.next();
System.out.print("비밀번호 : ");
pw = sc.next();
if(id.equals("smhrd")&&pw.equals("1234")) {
System.out.println("로그인성공");
break;
}else {
System.out.println("로그인실패");
//틀린 개수 세기
cnt++; // cnt = cnt+1
if(cnt==3) {
System.out.println("본인인증을해주세요");
break;
}
System.out.print("계속 하시겠습니까?");
String answer = sc.next();
if(answer.equals("N")||answer.equals("n")) {
break;
}
}
}while(true);
}
}
2.
package while문;
import java.util.Random;
public class Ex06랜덤 {
public static void main(String[] args) {
//랜덤 도구 생성
Random rd = new Random();
//1~10까지 중 랜덤 수 뽑기
//첫번째 랜덤 수 뽑기
//(10) -> 0~9
int num1 = rd.nextInt(10)+1;
int num2 = rd.nextInt(10)+1;
System.out.println(num1);
System.out.println(num2);
}
}
package while문;
import java.util.Random;
import java.util.Scanner;
public class Ex06_02랜덤 {
public static void main(String[] args) {
Random rd = new Random(); //랜덤 숫자 적어주는 것 정의
Scanner sc = new Scanner(System.in); //입력하는 수 적어주는 것 정의
int a =0; //맞은 개수 합
int b =0; //틀린 개수 합
int num1 = rd.nextInt(10)+1; // 1~10 사이 숫자 중 랜덤 수 뽑기
int num2 = rd.nextInt(10)+1; // 1!10 사이 숫자 중 랜덤 수 뽑기
do {
System.out.printf("%d + %d = ", num1, num2); //%d 실수문 넣기
int dap = sc.nextInt(); //답을 입력하는 것 정의
if (dap == (num1 + num2)) { //num1 와 num2 를 더했을때 답이 정답일때
System.out.println("Sucees!");
num1 = rd.nextInt(10)+1;
num2 = rd.nextInt(10)+1;
a++; //맞은개수를 계속 더해준다
}else {
System.out.println("Fail");
b++; //틀린개수를 계속 더해준다
}System.out.print("계속하시겠습니까?");
String answer = sc.next();
if (answer.equals("N")) {
break; //N가 나왔을때 반복문을 종료한다
}
}while(true);
System.out.println("종료!");
System.out.println("맞춘 개수 : "+ a);
System.out.println("틀린 개수 : "+ b);
}
}
package while문;
import java.util.Random;
import java.util.Scanner;
public class EX07_랜덤 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//랜덤 도구 생성
Random rd = new Random();
boolean sw = true; //사용자가 정답을 맞췄을 때 -> true (새로운 문제)
//사용자가 오답을 작성했을 때 -> false(이전 문제)
int num1 =0; //첫번째 랜덤값 저장 변수
int num2 =0; //두번째 랜덤값 저장 변수
int o = 0;// 맞춘개수 저장 변수
int x = 0;// 틀린개수 저장 변수
while(true) {
//1~10까지 중 랜덤 수 뽑기
//첫번째 랜덤 수 뽑기
//(10) -> 0~9
if(sw==true) {
num1 = rd.nextInt(10)+1;
num2 = rd.nextInt(10)+1;
}
System.out.printf("%d + %d = ", num1, num2);
int input = sc.nextInt(); // 사용자가 입력한 답
if(input==num1+num2) {//정답을 입력한 경우
System.out.println("Success!");
sw = true;
o++;
}else {//오답을 입력한 경우
System.out.println("Fail!");
sw = false;
x--;
}
System.out.print("계속하시겠습니까?");
String answer = sc.next();
if(answer.equals("N")||answer.equals("n")) {
System.out.println("프로그램 종료!");
break;
}else if(answer.equals("Y")||answer.equals("y")) {
continue; //현재 줄 아래에 있는 실행문장은 무시 조건 확인 부분으로 바로 이동
}
}
System.out.println("맞춘개수 : "+ o);
System.out.println("틀린개수 : "+ x);
}
}
p.115
for문
:정확하게 몇 번 반복해야 할 지 정해진 경우에 사용
:몇 번 반복해야하는지
for(초기화구문; 조건식; 반복후구문){ 실행문장 } 다음문장 |
초기화 구문: 반복문에서 사용할 변수 선언, 반복문 실행 시 맨 처음 딱 한번만 실행
조건식: 실행문장을 실행할 조건, 실행문장 실행 전 매번 확인
반복후구문: 실행문장을 실행한 다음 실행, 반복 조건 확인 전 매번(맨 처음 제외)실행
Q. 1부터5까지 출력해주는 반복문을 작성하시오.
package for문;
public class Ex01 {
public static void main(String[] args) {
for(int i=1; i<=5 ;i++) { //반복문을 5번 반복
System.out.println(i); // ()안에 문자를 넣으면 5번 출력된다
}
}
}
package for문;
public class Ex01 {
public static void main(String[] args) {
for(int i=1; i<=5 ;i++) { //반복문을 5번 반복
System.out.println(i); // ()안에 문자를 넣으면 5번 출력된다
} // 끝은조건식에서 마무리 된다
//for 문을 사용하여 21에서 57까지 출력하시오
for(int i=21; i<=57 ; i++) {
System.out.println(i);
}
//for 문을 사용하여 96에서 53까지 출력하시오
for(int i=96; i>=53 ; i--) {
System.out.println(i);
}
//for문을 사용하여 21에서 5까지 수 중 홀수만 출력하시오
for(int i=21; i<=57 ; i+=2) {
System.out.println(i);
}
}
}
예제2) 정수 1개를 입력받아 1부터 입력받은 정수까지 차례대로 출력해주는 프로그램을 작성하시오
package for문;
import java.util.Scanner;
public class Ex02 {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
int num = sc.nextInt();
for(int i=1; i<=num; i++) {
System.out.println(i);
}
}
}
Q. 100이하 두개의 정수를 입력 받아 작은 수 부터 큰 수까지 차례대로 출력해주는 프로그램을 작성하시오
package for문;
import java.util.Scanner;
public class Ex03 {
public static void main(String[] args) {
//100이하 두개의 정수를 입력 받아 작은 수 부터 큰 수까지 차례대로 출력해주는 프로그램을 작성하시오
Scanner sc =new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
//num1과 num2중에 어떤 수가 더 작은지 판단!
if(num1<num2) { //num1~num2
for(int i =num1;i<=num2;i++) {
System.out.println(i);
}
}else {//num2가 더 작다 -> num2~num1
for(int i=num2; i<=num1;i++) {
System.out.println(i);
}
}
---------------------------------------------------------
//삼항연산자 활용
int num3 = sc.nextInt();
int num4 = sc.nextInt();
//삼항연산자 사용 num3/num4 중 더 큰 숫자 big 더 작은 숫자 small
int big = (num3<num4)?num4:num3;
int small = (num3<num4)? num3: num4;
for(int i =small; i<=big; i++) {
System.out.println(i);
}
}
}
예제)1~50까지 369게임을 출력하싱. 끝자리수가 3,6,9일때는 "박수"를 출력 끝자리수가 5일때 "으악"을 출력 그 외의 수는 숫자를 그대로 출력하시오.
1. 1~50까지 출력(숫자로)
2. 끝자리 수가 5일때 으악 출력 나머지는 숫자
package for문;
public class Ex04 {
public static void main(String[] args) {
for(int i=1; i<=50 ; i++) {
if(i%10==5) {
System.out.println("으악");
}else if(i%10==3 || i%10==6 || i%10==9) {//1의자리수 3,6,9
System.out.println("박수");
}
else {
System.out.println(i);
}
}
}
}
Q.(77*1)+(76*2) + ... +(1*77)을 계산하여 결과를 출력하시오.
package for문;
public class Ex04 {
public static void main(String[] args) {
//(77*1)+(76*2) + ... +(1*77)
//앞에서 곱해지는 숫자저장 변수
int down =77;
//뒤에서 곱해지는 숫자저장 변수
int up =1;
//누적합 저장 변수
int sum = 0;
for(int i=1; i<77; i++) {//1~77 i변수 활용 / 77번 반복
sum += (down*up); //sum=sum+(down*up)
down--;
up++;
}
System.out.println(sum);
}
}
Q. 2~9단 출력하기
//2~9단까지 출력 반복문
//for문 혹은 while 문 (반복문)중첩해서 쓸 수 있다!
for(int i=2;i<=9;i++) {
System.out.println("==" +i+ "단==");
for(int j=1;j<=9;j++) {
System.out.printf("%d * %d = %d\n",i, j, i*j );
}
}
package 다중for문;
public class Ex02 {
public static void main(String[] args) {
//2~9단까지 출력 반복문
//for문 혹은 while 문 (반복문)중첩해서 쓸 수 있다!
for(int i=2;i<=9;i++) {
System.out.print(i+ "단 : \t");
for(int j=1;j<=9;j++) {
System.out.printf("%d * %d = %d\t",i, j, i*j );
}
System.out.println();
}
}
}
package 다중for문;
public class Ex03 {
public static void main(String[] args) {
//2~9단까지 출력 반복문
//for문 혹은 while 문 (반복문)중첩해서 쓸 수 있다!
for(int j=1;j<=9;j++) {
for(int i=2;i<=9;i++) {
System.out.printf("%d * %d = %d\t",i, j, i*j );
}
System.out.println();
}
}
}
package 다중for문;
public class Ex04 {
public static void main(String[] args) {
// 피라미드 별찍기 * 에서 *****까지 증가
for(int j=1;j<=5;j++) {
for(int i=1; i<=j; i++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("=======");
//피라미드 별찍기 *****에서 *까지 감소
for(int j=5;j>=1;j--) {
for(int i=1; i<=j; i++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("=======");
//피라미드 공백 별찍기
for(int j=1;j<=5;j++) {
//4번 반복 ~ 0번 반복
//j=1 i<=4 (j+3 / 5-j)
//j=2 i<=3 (5 / 3)
//j=3 i<=2
//j=4 i<=1
//j=5 i<=0
for(int i=1; i<=5-j; i++) {
System.out.print(" ");
}
//1번 반복 ~ 5번반족
for(int i=1; i<=j; i++) {
System.out.print("*");
}
System.out.println();
}
}
}
q. 2~30의 약수를 구하여라
package 다중for문;
import java.util.Scanner;
public class Ex05 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//int num = sc.nextInt();
//32 : 1 2 3(x) 4 5(x) ... 32
//16 :1~16
//약수 : 나누어 떨어지는 수
for(int j =2; j<=30;j++) {
System.out.print(j+ "의 약수 : ");
for(int i=1; i<=j/2; i++) {
if(j%i==0) {
System.out.print(i+ " ");
}
}
System.out.println(j);
}
}
}
Q. 1~1000까지의 숫자 중 완전수인 숫자를 모두 구하시오
완전수:자신의 약수 중에서 자신을 제외한 모든 약수의 합이 자신과 같은수
EX)6의 약수 1,2,3,6 /1+2+3=6
package 다중for문;
public class Ex06 {
public static void main(String[] args) {
int sum =0;
for(int j =1; j<=1000;j++) {
sum=0;
//약수 합 구하는 반복문
for(int i=1; i<=j/2; i++) {
if(j%i==0) {
sum+=i; //자기자신을 제외한 약수들의 합
}
}
if(j==sum) {
System.out.println(j);
}
}
}
}
728x90
LIST