조건문과 scanner를 이용한 간단한 장학금 지급여부 대상자 코드 짜기
package Workshop;
import java.util.*; // java scanner 사용
public class WorkShop2 {
public static double getUserInput() { // 여러번 값을 입력할 수 있게 하는 메소드 호출문
Scanner scanner = new Scanner(System.in); //참조타입으로 새로운 변수 저장
Double inputString = scanner.nextDouble(); // 실수타입 형식의 스캐너 변수 저장
return inputString; // 저장된 변수를 리턴
}
public static void main(String[] args) {
double a,a1,a2,a3,a4; // 값을 담기 위해 변수 생성
System.out.println("Computer Science 성적을 입력하세요 :");
a = getUserInput();
System.out.println("JavaPrograming 성적을 입력하세요 :");
a1 = getUserInput();
System.out.println("공학수학 성적을 입력하세요 :");
a2 = getUserInput();
System.out.println("오페라의 이해 성적을 입력하세요: ");
a3 = getUserInput();
System.out.println("배드민턴 성적을 성적을 입력하세요 :");
a4 = getUserInput();
System.out.println("==========================");
double avg = (a+a1+a2+a3+a4) /5;
System.out.println("평점은"+avg+"점 입니다.");
// 각 과목별 성적이 2.5이상(한 과목이라도 2.5 미만시 ,과락으로 장학금 탈락
//좀더 간결한 코드가 없을런지...?
// 삼항 연산자 조건....?
// 조건1) 평균이 3.7 이상 2)각 과목별 성적이 2.5이상 (2.5미만이라면 장학금 탈락)
// 조건이 2개다 만족해야 하기 때문에 2중 한개라도 만족이 안된다면 출력문으로 정보전달
if(avg <3.7) {
System.out.println("평균이 안됩니다.");
}else if(a<2.5 || a1<2.5 || a2<2.5 || a3<2.5 || a4<2.5) {
System.out.println("과락이야 친구야.");
}
else {
System.out.println("다음 학기 장학금 대상자 입니다.");
}
double b,b1,b2,b3,b4;
System.out.println("Computer Science 성적을 입력하세요 :");
b = getUserInput();
System.out.println("JavaPrograming 성적을 입력하세요 :");
b1 = getUserInput();
System.out.println("공학수학 성적을 입력하세요 :");
b2 = getUserInput();
System.out.println("오페라의 이해 성적을 입력하세요: ");
b3 = getUserInput();
System.out.println("배드민턴 성적을 성적을 입력하세요 :");
b4 = getUserInput();
System.out.println("==========================");
double avg1 = (b+b1+b2+b3+b4) /5;
System.out.println("평점은"+avg1+"점 입니다.");
if(avg <3.7) {
System.out.println("평균이 안됩니다.");
}else if(b<2.5 || b1<2.5 || b2<2.5 || b3<2.5 || b4<2.5) {
System.out.println("과락이야 친구야.");
}
else {
System.out.println("다음 학기 장학금 대상자 입니다.");
}
}
}
charAt() 메소드 : 문자열의 지정된 인덱스에 있는 문자를 반환함. 첫번째 문자의 색인은 0이고 두 번째 문자는 1이다.
기본형의 메모리 크기순서
byte -> short -> char -> int -> long -> float -> double
해당 타입이 표현할 수 있는 숫자범위를 초과 하는 값을 할당 할 경우 오버플로우 발생한다.
오버플로우는 casting 과정을 통해 형변환을 해줌으로 해결 할 수 있다.
double과 float :부동 소수점 값 의 정밀도 는 소수점 뒤에 값이 가질 수있는 자릿수를 나타냅니다. 의 정밀도 float는 6 자리 또는 7 자리이며 double변수의 정밀도는 약 15 자리입니다. 따라서 double대부분의 계산 에 사용하는 것이 더 안전합니다
java scope[자바 범위] : 변수는 생성된 범위 내에서만 엑세스 할 수 있다.
block scope[블록 범위] : 코드 블록은 중괄호 사이의 모든 코드를 나타낸다{}.
코드블록 내에서 선언된 변수는 변수가 선언 된 줄 다음에 나오는 중괄호 사이의 코드로만 엑세스 할 수 있습니다.
비교 연산자 [ == ] : String 에서 new 참조타입을 만들게 되면 새로운 객체가 만들어 지기 때문에 비교연산자[==]를
사용하면 같은 내용이더라도 false 값을 돌려받는다. 해결은 equals() 메소드사용
equals() : 두 문자열을 비교하여 문자열이 같으면 true를 반환하고 그렇지 않으면 false를 반환함.
public class example1 {
public static void main(String[] args) {
String str = "hello";
String str1 = "hello";
String str2 = new String();
str2 = "hello";
System.out.println(str.equals(str1)); //true
System.out.println(str.equals(str2));// 참조객체는 다르지만 문자열이 같기 때문에 true
}
}
equalsIgnoreCase () 메서드 : 문자열을 비교하지만 대소문자를 무시하고 동일한지 확인한다.
scanner 클래스 : nextLine() : 문자열을 읽는 데 사용되는 메서드
※Scanner test = new Scanner(System.in) ; //스캐너 객체 생성