본문 바로가기
수업 문제(국비 지원)/Java

[JAVA] 2022.08.24 - java 조건문

by byeolsub 2023. 4. 27.

문자열 입력 숫자 판별 프로그램

1.  다음은 주어진 문자열(value)이 숫자인지를 판별하는  프로그램을 작성하시오.
  String 함수 charAt(i), length() 을 사용함.
  [결과]
숫자만 입력하세요
123
123는 숫자 입니다.
  
  [결과]
숫자만 입력하세요
123@12
123@12는 숫자가 아닙니다.
package chap4;

import java.util.Scanner;

public class Test1 {
	public static void main(String[] args) {
		//---------------------초기화--------------------------------
		Scanner scan = new Scanner (System.in);//입력 받기위한 라이브러리의 객체(scan) 정의
		  int len = 0; 	//변수 초기화
	    int value = 0; 	//변수 초기화
	    boolean isNum=true; //변수 초기화인데 불리언임.
		//-----------------------입력부------------------------------
		System.out.println("숫자를 입력하세요"); 
		String str = scan.next(); //str이라는 변수를 넥스트(문자열자료형)함수를 통해 문자열자료형로 받아온다.
		len = str.length(); //len은 str의 인덱스 개수. 
		//-------------------------제어부-------------------------------
	    for(int i= 0; i<len; i++) { //for문을 입력값의 인덱스 개수만큼 검증하기위한 조건.
	    	value = str.charAt(i); //입력받은 인덱스(자리)의 값
	    	 if (('0'<=value && value <= '9')) { //조건식 : 1부터 9까지의 숫자
				isNum = true; 	//위의 조건이 참이라면, 조건식1
	    	 }
			 else { 	
				isNum = false; //위의 조건이 거짓이라면, 조건식2 
	    	 	break;		 //반복문의 종료
	    	 }
	    }
		//--------------------------출력부------------------------------------
		if(isNum) 
			System.out.println(str+",숫자입니다."); //조건문1 만족할때 출력
		else
			System.out.println(str+",숫자가 아닙니다."); //조건문2 만족할때 출력
	}
}

  • 윤년,평년 판별 프로그램

 * 윤년 구하기
 *  윤년은 4의 배수 중  100의 배수인경우는 평년, 100의 배수가 아닌 경우는 윤년, 
 *  단 400의 배수는 윤년. 
 *  년도를 입력받아서 윤년, 평년 인지를 출력하기.

 *  [결과]
 *  년도를 입력하세요
 *  2020
 *  윤년
 *  
 *  년도를 입력하세요
 *  2100
 *  평년

 태양력의 윤년
package chap4;

import java.util.Scanner;

public class Test2 {
	public static void main(String[] args) {
		System.out.println("년도를 입력하시오");
		Scanner scan = new Scanner(System.in);
		int year =scan.nextInt();
		int leafyear=0;////윤년은 해당 연도를 4,100,400로 나눈 값이 0

		if (year%4==0&&year%100==0&&year%400==0) {
			System.out.println(year+"\\n"+"윤년");
		}
		else{
			System.out.println(year+"\\n"+"평년");
		}
	}
}
package chap4;

import java.util.Scanner;

public class Test2 {
	public static void main(String[] args) {
		System.out.println("년도를 입력하시오");
		Scanner scan = new Scanner(System.in);
		int year =scan.nextInt();
		int leafyear=0;////윤년은 해당 연도를 4,100,400로 나눈 값이 0

		if (year%4==0) {
			if(year%400 !=0||year%100 !==0) {
			System.out.println(year+"\\n"+"윤년");
		}
		else{
			System.out.println(year+"\\n"+"평년");
		}
		}
		else{
			System.out.println(year+"\\n"+"평년");
		}
	}
}

 화면에서 한개의 문자를 입력받아  대문자인 경우는 소문자로, 
 소문자인 경우는 대문자로  숫자인 경우는 20을 더한 값을   출력하기
 그외의 문자는 기타 문자 를 출력하세요
   
   [결과]
 한개의 문자를 입력하세요
 A
 a   
   [결과]
 한개의 문자를 입력하세요
 a
 A   

   [결과]
한개의 문자를 입력하세요
1
21
package chap4;

import java.util.Scanner;

public class Test3 {
	public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    char result = '0'; // => 대문자 소문자 결과 값 저장용
    int result_int = 0; // => 숫자 연산 후 결과 값 저장용
    System.out.println("한개의 문자를 입력하세요");
    String str = scan.next(); //문자열 받게 끔
    char ch = str.charAt(0);// 입력된 문자열중 첫번째 문자를 저장
    int i = ch; // => 아스키코드로 변환
    int num = ch - '0'; // => 숫자 문자를 숫자로 변형

    if(ch>='A'&&ch<='Z'){ // 대문자면 소문자로 변환
      result = (char)(i + 32);
      System.out.println(result);
    }
    else if(ch>='a'&&ch<='z'){ // 소문자면 대문자로 변환
      result = (char)(i - 32);
      System.out.println(result);
    }
    else if('0'<=ch && ch <= '9'){ //숫자면 20더한 값을 출력
      result_int= num + 20;
      System.out.println(result_int);
    }
    else {
      System.out.println("기타문자");
    }       
  }
}
package chap4;

import java.util.Scanner;

public class Test2 {
	public static void main(String[] args) {
		System.out.println("년도를 입력하시오");
		Scanner scan = new Scanner(System.in);
		int year =scan.nextInt();
		int leafyear=0;////윤년은 해당 연도를 4,100,400로 나눈 값이 0

		if (year%4==0) {
			if(year%400 !=0||year%100 !=0) {
			System.out.println(year+"\\n"+"윤년");
		}
		else{
			System.out.println(year+"\\n"+"평년");
		}
		}
		else{
			System.out.println(year+"\\n"+"평년");
		}
	}
}
}

대칭수 구하는 프로그램을 작성하기
   대칭수란 숫자를 거꾸로 읽어도 앞으로 읽는 것과  같은 수를 말한다.
   12321 : 대칭수
   12345 : 대칭수 아님
package chap4;

import java.util.Scanner;

public class Test4 {
	public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int len =0;
    System.out.println("숫자를 입력하세요");
    String num = scan.next();
    len = num.length();
    String reult1 = "";
    boolean f_temp = false;

    for(int i=0; i<=(len/2)-1; i++){
      reult1 += num.charAt(i);
    }
    int count = 0;
    for(int i=len-1; i>=(len/2)+1; i--){
      if(reult1.charAt(count) == num.charAt(i)){
        f_temp = true;
      }
      else{
        f_temp = false;
        break;
      }
      if(count != reult1.length()-1)
        count++;
    }
    if(f_temp)
      System.out.println("대칭수");
    else
      System.out.println("대칭수 아님");

	}
}
package chap4;

import java.util.Scanner;

public class Test4 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
	    System.out.println("숫자를 입력하세요");
	    int num = scan.nextInt();//입력받은수 123
	    int tmp = num;
	    int result =0 ;
	    while(tmp!=0) {//tmp :123>12>1>0 0이면 거짓 반복문 바깥
	    	result*=10;//3>30>32>320
	    	result += tmp%10; //0>2>1
	    	tmp/=10; //1>1/10=0	    	
	    }
	    //num: 입력받은수
	    //result : 뒤집은숫자
	    if(num == result) {
	        System.out.println(num+"대칭수");
	    }else{
	        System.out.println(num+"대칭수 아님");
        }
	}
}