자바 선행학습 2일차 - for , 향상된 for, switch random

728x90

연산자 우선순위

단항 연산자 > 이항 연산자 (산술 > 관계 > 논리) > 삼항 연산자 > 대입연산자 

+-/ > && || > ? 순서

 


윤&평년 계산 알고리즘

Scanner로 입력을 받아 해당년이 윤년인지 평년인지 확인 (삼항연산자 사용)

*boolean저장변수는 is를 붙여 배정한다

import java.util.Scanner;

public class Tim0118 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("년도를 입력하세요");
		int year = scanner.nextInt();
		
		boolean isLeapYear = (year%4==0 && year%100!=0) || year%400 == 0;
		//boolean의 변수이름은 is를 붙여 저장한다
//		is가 붙은 변수명은 암묵적으로 무조건 true or false 값을 배정한다
		
		
		if(isLeapYear) {
			System.out.println("윤년입니다");
		}
		else {
			System.out.println("평년입니다");
		}
		System.out.println((isLeapYear ? "윤":"평")
		+ "년입니다");
//		년도가 4로 나눠떨어지고 100으로 나눠떨어지지 않거나 400으로 나눠떨어지면 윤년
//		= /4 && %100!=0 || /400 = 0
		
		}
}

switch 반복문 

3가지 int점수를 입력받아서 평균을 기준으로 점수 매기는 코드

import java.util.Scanner;

public class Tim0118 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("3과목 점수를 입력하세요");
		int java = scanner.nextInt();
		int jsp = scanner.nextInt();
		int spring = scanner.nextInt();
		
		int total = java + jsp + spring;
		double average = total/3.;
		
		System.out.println("평균: "+average);
		System.out.println("총점: "+total);
		
		switch ((int)average / 10) {
		case 10: 
			System.out.println("A");
			break;
		case 9: 
			System.out.println("A");
			break;
		case 8: 
			System.out.println("B");
			break;
		case 7: 
			System.out.println("C");
			
//			key와 value가 일치할경우 실행할 문장
//			break; 를 실행해줘야 조건이 일치할시 반복문을 종료함. break가 없으면 현 반복문 무한반복
		
		default:{
//			key와 value가 없을 경우 실행할 문장
//			break; 동일한 이유로 break실행
			System.out.println("F");
		}	break;
		}
	}
}

연속 증감자

전위, 후위형 증감자 차이점

public class Tim0118 {
	public static void main(String[] args) {
		int a = 1, b, c;
		
		b = a++;
		c = ++a;
		
		System.out.println("A" + a + "B" + b + "C" + c);
//		출력값 A 3 B 1 C 3
//		a++ 후위형 증감은 일단 b에 a현재값을 집어넣고 a변수에 1을 더함
//		++a 은 일단 a변수에 1을 더함
//		따라서 b에 1을 집어넣고 a에 1을 더해 2가됨
//		c는 먼저 a에 1을 더한 값인 3이 들어가고 총 a의 값이 3이므로 위와 같은 출력값이 나옴
	}
}

for문과 향상된 for문 사용하여 array 인덱스 값 출력

import java.util.Arrays;
class Tim0118{
	public static void main(String[] args) {
		int [] data = {100, 200, 300};
		System.out.println(Arrays.toString(data));
		
		//배열을 선언만 하면 기본 초기화가 실시됨
		//숫자는 0, boolean은 false, 문자는 공백, 객체는 null
		
		for(int j = 0; j <data.length; j++) {
			System.out.println(data[j]);
		}
		
		System.out.println();
		
//		향상된 for
//		배열 전체를 대상으로 작업할 경우 사용
		for(int i : data) {
			System.out.println(i);
//		위 for문으로 돌린 array와 동일한 결과
//		i라는 변수에 data의 0번째 인덱스 데이터를 넣고 반복을 시작하고 data배열의 마지막 인덱스 값을 i에 넣고 처리한 후 종료
//		
		}
	
	}
}

Random 함수 사용하여 주사위 개수 구하기

.nextInt .nextDouble 등등

import java.util.Arrays;
import java.util.Random;
class Tim0118{
	public static void main(String[] args) {
		for(int i = 0; i<=5; i++) {
			System.out.println((int)(Math.random()*45)+1);
	}
//	
		System.out.println();
		
		Random random = new Random();
		for(int i = 0; i<=5; i++) {
		System.out.println(random.nextInt(30));
		//Math.random()과 동일한 함수 = random객체를 불러와서 random.nextDouble()실행
		//Math.random()*숫자 대신에 nextInt or nextDouble(숫자) =가로안에 숫자를 씀
		}
		System.out.println();
		
		Random random2 = new Random();
		int a = 0,b=0,c=0,d=0, e=0, f=0; //배열을 안쓰고 일일이 변수 지정해서 주사위 굴리기
		for(int j = 0; j<10; j++) {
			int r = (random2.nextInt(6));
			if(r==1) {
				a+=1;
			}
			else if(r==2) {
				b+=1;
			}
			else if(r==3) {
				c+=1;
			}
			else if(r==4) {
				d+=1;
			}
			else if(r==5) {
				e+=1;
			}
			else{
				f+=1;
			}
		}
System.out.println("1의 개수:" + a);
System.out.println("2의 개수:" + b);
System.out.println("3의 개수:" + c);
System.out.println("4의 개수:" + d);
System.out.println("5의 개수:" + e);
System.out.println("6의 개수:" + f);
	}
	}
728x90