Quest

[과제] 삼항 연산자

_유니 2022. 10. 24. 15:14

** 삼항 연산자 사용할 때 조건식은 변수 타입 달라도 됨 결과 값이 같아야 됨
만약 String 변수를 생성했는데 결과 값이 int이면 결과 값 뒤에 + " "를 넣어주면 String형이 된다

그리고 내 코드 너무 길다 ... 간단하게 짜려고 생각할 것!



문제 1. 키보드로 입력받은 하나의 정수가 양수이면 "양수다", 양수가 아니면 "양수가 아니다"를 출력하세요.

package com.yh.practice.func;

import java.util.Scanner;

public class OperatorPractice {

	public void practice1() {
		
		Scanner sc = new Scanner(System.in); // 스캐너 생성
		
		System.out.print("정수 : ");
		int num = sc.nextInt(); // 정수를 입력받는 메소드
		
		String result = (num > 0) ? "양수다" : "양수가 아니다"; // 삼항 연산자
		
		System.out.println(result);
		
	}
}
정수 : -10
양수가 아니다



문제 2. 키보드로 입력받은 하나의 정수가 양수이면 "양수다",
양수가 아닌 경우 중에서 0이면 "0이다", 0이 아니면 "음수다"를 출력하세요.

package com.yh.practice.func;

import java.util.Scanner;

public class OperatorPractice {

	public void practice2() {
		
		Scanner sc = new Scanner(System.in); // 스캐너 생성
		
		System.out.print("정수 : ");
		int num = sc.nextInt(); // 정수를 입력받는 메소드
		
		String result = (num > 0) ? "양수다" : (num == 0) ? "0이다" : "음수다"; // 중첩 삼항 연산자
		
		System.out.println(result);
		
	}
}
정수 : -10
음수다




문제 3. 키보드로 입력받은 하나의 정수가 짝수이면 "짝수다", 짝수가 아니면 "홀수다"를 출력하세요.

package com.yh.practice.func;

import java.util.Scanner;

public class OperatorPractice {

	public void practice3() {
		
		Scanner sc = new Scanner(System.in); // 스캐너 생성
		
		System.out.print("정수 : ");
		int num = sc.nextInt(); // 정수를 입력받는 메소드
		
		String result = (num % 2 == 0) ? "짝수다" : "홀수다"; // 삼항 연산자
		
		System.out.println(result);
		
	}
}
정수 : 10
짝수다




문제 4. 모든 사람이 사탕을 골고루 나눠가지려고 한다. 인원 수와 사탕 개수를 키보드로 입력받고
1인당 동일하게 나눠가진 사탕 개수와 나눠주고 남은 사탕의 개수를 출력하세요.

package com.yh.practice.func;

import java.util.Scanner;

public class OperatorPractice {

	public void practice4() {
		
		Scanner sc = new Scanner(System.in); // 스캐너 생성
		
		System.out.print("인원 수 : ");
		int peole = sc.nextInt(); // 정수를 입력받는 메소드
		
		System.out.print("사탕 개수 : ");
		int candy = sc.nextInt(); // 정수를 입력받는 메소드

		System.out.println("1인당 사탕 개수 : " + (candy / peole));
		
		System.out.println("남는 사탕 개수 : " + (candy % peole));
		
	}
}
인원 수 : 27
사탕 개수 : 300
1인당 사탕 개수 : 11
남는 사탕 개수 : 3




문제 5. 키보드로 입력받은 값들을 변수에 기록하고 저장된 변수 값을 화면에 출력하여 확인하세요.
이때 성별이 'M'이면 남학생, 'M'이 아니면 여학생으로 출력 처리하세요. ( 소문자도 입력 허용)

package com.yh.practice.func;

import java.util.Scanner;

public class OperatorPractice {

	public void practice5() {
		
		Scanner sc = new Scanner(System.in); // 스캐너 생성
		
		System.out.print("이름 : ");
		String name = sc.nextLine(); // 문자열을 엔터 전까지 입력받는 메소드
		
		System.out.print("학년(숫자만) : ");
		int g = sc.nextInt(); // 정수를 입력받는 메소드
		
		System.out.print("반(숫자만) : ");
		int c = sc.nextInt(); // 정수를 입력받는 메소드
		
		System.out.print("번호(숫자만) : ");
		int n = sc.nextInt(); // 정수를 입력받는 메소드
		
		sc.nextLine(); // 버퍼에 남아 있는 엔터 제거를 위한 메소드
		
		System.out.print("성별(M/F) : ");
		char gender = sc.nextLine().charAt(0); // 문자열에서 0번째 단일문자 추출
		
		System.out.print("성적(소수점 아래 둘째자리까지) : ");
		double score = sc.nextDouble(); // 실수를 입력받는 메소드
		
		gender = (gender == 'M') || (gender == 'm') ? '남' : '여'; // 논리 연산자, 삼항 연산자

		System.out.println(g + "학년 " + c + "반 " + n + "번 " + name + " " + gender + "학생의 성적은 " + score + "이다." );
		
	}
}
이름 : 홍길동
학년(숫자만) : 1
반(숫자만) : 3
번호(숫자만) : 16
성별(M/F) : M
성적(소수점 아래 둘째자리까지) : 89.56
1학년 3반 16번 홍길동 남학생의 성적은 89.56이다.


내가 작성한 코드... result 변수 생성하지 말고 gender 변수 재활용하자 ^^

String result = (gender == 'M' || gender == 'm') ? "남학생" : "여학생";


문제 6. 나이를 키보드로 입력받아 어린이(13세 이하)인지, 청소년(13세 초과 ~ 19세 이하)인지,
성인(19세 초과)인지 출력하세요.

package com.kh.practice.func;

import java.util.Scanner;

public class OperatorPractice {

	public void practice6() {
		
		Scanner sc = new Scanner(System.in); // 스캐너 생성
		
		System.out.print("나이 : ");
		int age = sc.nextInt(); // 정수를 입력받는 메소드
		
		String result = (age <= 13) ? "어린이" : (age > 19) ? "성인" : "청소년"; // 중첩 삼항 연산자
		
		System.out.println(result);
		
	}
}
나이 : 11
어린이

나이 : 15
청소년

나이 : 20
성인




문제 7. 국어, 영어, 수학에 대한 점수를 키보드를 이용해 정수로 입력받고,
세 과목에 대한 합계(국어+영어+수학)와 평균(합계/3.0)을 구하세요.
세 과목의 점수와 평균을 가지고 합격 여부를 처리하는데
세 과목 점수가 각각 40점 이상이면서 평균이 60점 이상일 때 합격, 아니라면 불합격을 출력하세요.

package com.kh.practice.func;

import java.util.Scanner;

public class OperatorPractice {

	public void practice7() {
		
		Scanner sc = new Scanner(System.in); // 스캐너 생성
		
		System.out.print("국어 : ");
		int kor = sc.nextInt(); // 정수를 입력받는 메소드
		
		System.out.print("영어 : ");
		int eng = sc.nextInt(); // 정수를 입력받는 메소드
		
		System.out.print("수학 : ");
		int math = sc.nextInt(); // 정수를 입력받는 메소드
		
        	int sum = kor + eng + math;
		double avg = (kor + eng + math) / 3.0;
		
		System.out.println("합계 : " + sum);
		System.out.println("평균 : " + avg);
		
		String result = ((kor >= 40) && (eng >= 40) && (math >= 40) && (avg >= 60)) ? "합격" : "불합격"; // 논리 연산자, 삼항 연산자
		
		System.out.println(result);
		
	}
국어 : 60
영어 : 80
수학 : 40
합계 : 180
평균 : 60.0
합격


내가 작성한 코드... 변수 sum, avg를 생성해주면 더 깔끔해진다

System.out.println("합계 : " + (kor + eng + math));
System.out.println("평균 : " + (kor + eng + math) / 3.0);

String result = ((kor >= 40) && (eng >= 40) && (math >= 40) && ((kor + eng + math) / 3.0) >= 60)) ? "합격" : "불합격";


문제 8. 주민번호를 이용하여 남자인지 여자인지 구분하여 출력하세요.

package com.kh.practice.func;

import java.util.Scanner;

public class OperatorPractice {

	public void practice8() {
		
		Scanner sc = new Scanner(System.in); // 스캐너 생성
		
		System.out.print("주빈번호를 입력하세요(- 포함) : ");
		String num = sc.nextLine(); // 문자열을 엔터 전까지 입력받는 메소드 // -이 포함되어 있기 때문에 int 사용 불가
		char gender = num.charAt(7); // 문자열에서 7번째 단일문자 추출
		
		String result = (gender == '2') ? "여자" : "남자"; // 삼항 연산자
		System.out.println(result);
        
        sc.close(); // 스캐너 사용 종료
	}
}
주빈번호를 입력하세요(- 포함) : 123456-2345678
여자