if~else

Chae Yun·2021년 7월 25일
0

●성적표

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;



public class Test029
{
	public static void main(String[] args)throws IOException
	{

		
		//주요 변수 선언
		int kor, eng, mat ;
		int tot;
		double avg;
		char grade='F'; //else로 끝나지 않아 에러가 난다는건 거짓말. 이렇게 설정해두면 되니까
		
		String name; 
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));	

		//○연산 및 처리
		System.out.print("이름 입력 : ");
		name=br.readLine();
		
		System.out.print("국어 점수 : ");
		kor=Integer.parseInt(br.readLine());  

		System.out.print("영어 점수 : ");
		eng=kor=Integer.parseInt(br.readLine()); 
		
		System.out.print("수학 점수 : ");
		mat=kor=Integer.parseInt(br.readLine()); 


		//○총점, 평균 산출
		tot = kor+eng+mat;
		avg = tot/3.0; //★3아니고 3.0


		//○등급산출 ※두 개 이상의 조건이 등장→논리연산자
		if(avg>=90 && avg<=100)
		{grade='A';}
			else if (avg>=80) 
			{grade='B';}
				else if (avg>=70)
				{grade='C';} 
					else if (avg>=60)
					{grade='D';}

			
		//○결과출력
		System.out.println();
		System.out.printf(">>당신의 이름은 %s 입니다\n",name);
		System.out.printf(">>국어 점수는 %d\n",kor);
		System.out.printf(">>영어 점수는 %d\n",eng);
		System.out.printf(">>수학 점수는 %d\n",mat);
		System.out.printf(">>총점은 %d 이고, 평균은 %.2f 입니다\n",tot,avg);
		System.out.printf(">>등급은 %c 입니다\n",grade);		
	}
}

🧐 grade='D'; 👉 문자열 아니고 문자라 '이거 하나
🧐 if 문은 항상 else로 끝나야 할까? ❌ 👉초기화를 어떻게 해주냐에 따라 else로 끝나지 않아도 error가 나지 않아

●짝수 홀수 판별

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Test030
{
	public static void main(String[]args) throws IOException
	{
		//주요 변수 선언
		int n;
		String strResult;
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		System.out.print("임의의 정수 입력 : ");
		n=Integer.parseInt(br.readLine());

		/* 영이 짝수로 산출되는 에러 발생
		if (n%2==0)
		{
			System.out.println(n+"→짝수");
		}
		else if(n%2!=0)
		{
			System.out.println(n+"→음수");
		}
		else
		{
			System.out.println(n+"영");
		}
		*/

		if(n==0)
		{
			strResult = "영";
		}
		else if (n%2==0)
		{
			strResult = "짝수";
		}
		else
		{
			strResult="음수";
		}	
		System.out.println(n+"→"+strResult);		
	}
}

🧐조건문의 순서에 따라 출력값 결과가 달라지는 것에 주의

●숫자와 연산자 입력하여 수식 출력

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Test032
{
	public static void main(String[] args)throws IOException //readLine때문에 IOException
	{
		/*
		//방법①	
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int a, b;
		char op; //연산자
		System.out.print("첫 번째 정수 입력 : ");
		a= Integer.parseInt(br.readLine());

		System.out.print("두 번째 정수 입력 : ");
		b= Integer.parseInt(br.readLine()); //인티져

		//Integer.parseInt() 어쨌든 숫자 모양으로 되어있어야 인티져로 정수로 변경이 가능해

		System.out.print("연산자 입력 [+ - * /] : ");
		//op = Stytem.in.read(); //(오류)앞은 chr, 뒤는 int라 형변환이 필요하다
		op=(char)System.in.read();

		if(op=='+')
		{
			System.out.printf("\n>>%d+%d=%d\n",a,b,(a+b));
		}
		else if(op=='-')
		{	
			System.out.printf("\n>>%d-%d=%d\n",a,b,(a-b));
		}
		else if(op=='*')
		{
			System.out.printf("\n>>%d*%d=%d\n",a,b,(a*b));
		}
		else if(op=='/')
		{	
			System.out.printf("\n>>%d/%d=%d\n",a,b,(a/b));
		}
		else
		{
			System.out.printf("입력과정에 오류가 존재합니다.\n");
		}
		*/

		
		/*
		//방법②
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int a, b, op; //연산자도 정수로 받기
		
		System.out.print("첫 번째 정수 입력 : ");
		a= Integer.parseInt(br.readLine());

		System.out.print("두 번째 정수 입력 : ");
		b= Integer.parseInt(br.readLine()); //인티져

		//Integer.parseInt() 어쨌든 숫자 모양으로 되어있어야 인티져로 정수로 변경이 가능해

		System.out.print("연산자 입력 [+ - * /] : ");
		op = System.in.read(); //(오류)앞은 chr, 뒤는 int라 형변환이 필요하다
			---------------
			아스키코드 받아온다
		

		if(op==43)
			System.out.printf("\n>>%d+%d=%d\n",a,b,(a+b)); // 코드가 한줄이면 {}(블레이스) 생략 가능
		else if(op==45)
			System.out.printf("\n>>%d-%d=%d\n",a,b,(a-b));
		else if(op==42)
			System.out.printf("\n>>%d*%d=%d\n",a,b,(a*b));
		else if(op==47)
			System.out.printf("\n>>%d/%d=%d\n",a,b,(a/b));
		else
			System.out.printf("입력과정에 오류가 존재합니다.\n");
		*/

		//방법③
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		//check!!
		int a, b, result=0; //0으로 초기화해서 else 없어도 괜찮다.
		char op;
		
		System.out.print("첫 번째 정수 입력 : ");
		a= Integer.parseInt(br.readLine());

		System.out.print("두 번째 정수 입력 : ");
		b= Integer.parseInt(br.readLine()); //인티져

		//Integer.parseInt() 어쨌든 숫자 모양으로 되어있어야 인티져로 정수로 변경이 가능해

		System.out.print("연산자 입력 [+ - * /] : ");
		op = (char)System.in.read(); //(오류)앞은 chr, 뒤는 int라 형변환이 필요하다
		

		if(op=='+')
			result=a+b;
		else if(op=='-')
			result=a-b;
		else if(op=='*')
			result=a*b;
		else if(op=='/')
			result=a/b;

		System.out.printf("\n>>%d%c%d\n", a,op, b);


	}
}

● 수의 크기에 따른 정렬

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Test033
{
	public static void main(String[] args)throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int a,b,c;

		System.out.print("첫 번째 정수 입력 : ");
		a= Integer.parseInt(br.readLine());

		System.out.print("두 번째 정수 입력 : ");
		b= Integer.parseInt(br.readLine()); //인티져

		System.out.print("세 번째 정수 입력 : ");
		c= Integer.parseInt(br.readLine()); //인티져

		if(a>b) 
		{	//a와b 자리 바꾸기
			a=a^b;
			b=b^a;
			a=a^b;
		}

		if(a>c) 
		{	//a와c 자리 바꾸기
			a=a^c;
			c=c^a;
			a=a^c;
		}

		if(b>c) 
		{	//b와c 자리 바꾸기
			b=b^c;
			c=c^b;
			b=b^c;
		}
		System.out.println("자리바꿈발생");
		System.out.printf("\n>>정렬 결과 : %d %d %d\n",a,b,c);
	}
}

● 대문자 소문자 변환

import java.io.IOException;

public class Test035
{
	public static void main(String[] args) throws IOException
	{
		// ○주요 변수 선언
		
		int a;		// 입력받은 알파벳 int형으로 변수 선언

		System.out.print("알파벳 한 문자 입력 : ");
		a = System.in.read();

		// ○연산 및 처리
		if ((a>=65 && a<=90) || (a>=97 && a<=122))
		{
			if (a<=90)		// if 대문자
			{
				a = a+32;	// 대문자 + 32 = 소문자
			}
			else			// if 소문자
			{
				a = a-32;	// 소문자 - 32 = 대문자
			}
			
		// ○ 결과 출력	
			System.out.println(">> " + (char)a); // 아스키코드값을 char형으로 변환
			}
				else
			{
			System.out.println(">> 입력 오류~!!!");
			}
	
	}
}

아스키코드
🧐대문자(A~Z) : 65~90
🧐소문자(a~z) : 97~122

0개의 댓글