#이름 #나이 # 성별 #몸무게 #결혼여부 #전화번호

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


// 개인정보(3명) 출력

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));


int manCnt = 3;

String[] name = new String[manCnt];

int[] age = new int[manCnt];

char[] gender = new char[manCnt];

float[] weight = new float[manCnt];

boolean[] married = new boolean[manCnt];

String[] phone = new String[manCnt];


for (int i = 0; i < manCnt; i++) {

System.out.print("이름 : ");

name[i] = reader.readLine();


System.out.print("나이 : ");

age[i] = Integer.parseInt(reader.readLine());


System.out.print("성별 : ");

gender[i] = (char) reader.read();

reader.readLine();


System.out.print("몸무게 : ");

weight[i] = Float.parseFloat(reader.readLine());


System.out.print("결혼여부 : ");

married[i] = Boolean.parseBoolean(reader.readLine());


System.out.print("전화번호 : ");

phone[i] = reader.readLine();

}

System.out.println("========== 개인 정보 출력 ==========");

System.out.println("번호\t 이름\t 나이\t 성별\t 몸무게\t 결혼여부\t 전화번호");

for (int i = 0; i < manCnt; i++) {

System.out.printf("%d\t %s\t %d\t %c\t %.2f\t %b\t %s\n",(i+1),name[i], age[i], gender[i], weight[i], married[i],

phone[i]);

}

}

#자바 #배열 #윤년 #평년 #달력 #캘린더

 

 public static void main(String[] args) throws NumberFormatException, IOException {
  
  // 년와 월을 입력 받아 달력을 출력
  BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
  
  System.out.print("년을 입력해주세요 : ");
  int year = Integer.parseInt(read.readLine());
  
  System.out.print("월을 입력해주세요 : ");
  int month = Integer.parseInt(read.readLine());
  
  // 해당 월의 1일까지의 일자의 갯수

  int[] maxDate = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  
  if(year % 4 ==0 && year % 100 !=0 || year % 400 ==0) {
   maxDate[1]=29; // 윤년일 경우
  }
  
  // 작년
  int lastYear = year-1;
  // 작년까지 발생한 윤년의 횟수
  int leapYear_cnt = (lastYear/4) - (lastYear/100) + (lastYear/400);
  // 해당년의 해당월의 1일까지의 일자 수 구하기
  int dayOfYear = 1;
  

  
  for(int i=0; i<month-1; i++) {
   dayOfYear += maxDate[i];
  }  
    // 해당 월의 첫번째 날짜의 요일
    int dayOfweek = (lastYear + leapYear_cnt + dayOfYear)%7;
    

    System.out.printf("%d년 %02d월\n", year, month);
    System.out.printf("일\t월\t화\t수\t목\t금\t토\n");
    
    // 공백 출력
    for(int i =0; i<dayOfweek; i++) {
     System.out.print("\t");
    }
     // 월에 따른 날짜 출력 조건
    int lastDay = maxDate[month-1];
    
    // 날짜 출력
    for(int i = 1; i<=lastDay; i++) {
     System.out.print(i + "\t");
     if((dayOfweek+i)%7 ==0) {
      System.out.println();
     }
    }

    
 }

#BufferedReader #Array

 

 public static void main(String[] args) throws NumberFormatException, IOException {
  
  // 국어, 영어, 수학 점수 입력 받아 총점 평균 구하기
  BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  
  
  String[] subject = {"국어", "영어", "수학"};
  int[] score = new int[subject.length +1]; // 총점까지 계산하기 위해 길이값을 +1 해준다.
  
  for(int i =0; i<subject.length; i++) {
   do {
    System.out.print(subject[i] + " : ");
    score[i] = Integer.parseInt(reader.readLine());
   }while(score[i] < 0 || score[i] > 100); // score 값이 0보다 작거나 또는, 100보다 큰 경우 다시 입력받는다.


   // 총점 score[score.length -1] -- 마지막 포인트
   score[score.length-1] += score[i];
  }
  
  // 평균
  float avg = score[score.length-1] / (float)subject.length;
  
  System.out.println("======= 기말고사 성적 =======");
  for(int i=0; i<subject.length; i++) {
   System.out.print(subject[i] + "\t");
  }
  System.out.println("총점\t 평균");
  for(int i = 0; i<score.length; i++) {
   System.out.printf("%d\t",score[i]);
  }
  System.out.printf("%.2f",avg);
 }

#자바 #로또 #로또번호출력

 public static void main(String[] args) throws InterruptedException {
  
  // 로또 예제(1~45) 번호 중 6개 출력(중복 X)
  
  int[] lotto = new int[45];
  
  for(int i=0; i<lotto.length; i++) {
   lotto[i] = (i + 1);
   System.out.print(lotto[i] +", "); // 1부터 45의 숫자 출력
  }
  System.out.println();
  
  
  int temp = 0;
  // lotto = {1, 2, 3, 4, 5, 6, ... 44, 45}
  for(int i =0; i<100; i++) {
   int idx = (int)(Math.random() * lotto.length); // 임의의 인덱스 번호
   
   // 정렬
   temp = lotto[0]; // temp에 원래 lotto[0] 의 값을 담아준다.
   lotto[0] = lotto[idx];
   lotto[idx] = temp;
  }


  System.out.println("====== 금주의 로또 당첨 번호 ======");
  for(int i = 0; i<6; i++) {
   Thread.sleep(1000);
   System.out.print(lotto[i] + "  ");
  }

 }

#자바 #각각의_숫자 #카운트

 

public static void main(String[] args) {
  
  int[] num = new int[30];
  
  for(int i = 0; i<num.length; i++) {
   
   num[i] = (int)(Math.random() * 10); // 0부터 9 범위 내의 숫자
   System.out.print(num[i] + ", ");
  }System.out.println();
  
  // 배열에 들어있는 숫자들이 각각 몇개 들어있는지 카운트 세기
  int[] count = new int[10];
  
  for(int i = 0; i<num.length; i++) {
   count[num[i]]++; // num[i] 의 값은 count[i]값과 동일 0~9 
  }
  for(int i =0; i<count.length; i++) {
   System.out.println(i + "번 : " + count[i]); // 카운트 출력을 위한 구문
  }
  

 }

#자바 #로또 #lotto #Math.random()

 

 public static void main(String[] args) throws InterruptedException {
  
  // 로또 예제(1~45) 번호 중 6개 출력(중복 X)
  
  int[] lotto = new int[45];
  
  for(int i=0; i<lotto.length; i++) {
   lotto[i] = (i + 1);
   System.out.print(lotto[i] +", "); // 1부터 45의 숫자 출력
  }
  System.out.println();
  
  
  int temp = 0;
  // lotto = {1, 2, 3, 4, 5, 6, ... 44, 45}
  for(int i =0; i<100; i++) {
   int idx = (int)(Math.random() * lotto.length); // 임의의 인덱스 번호
   
   // 정렬
   temp = lotto[0]; // temp에 원래 lotto[0] 의 값을 담아준다.
   lotto[0] = lotto[idx];
   lotto[idx] = temp;
  }
  System.out.println("====== 금주의 로또 당첨 번호 ======");
  for(int i = 0; i<6; i++) {
   Thread.sleep(1000);
   System.out.print(lotto[i] + "  ");
  }

 }

#자바 #Array #Math.random

 

public static void main(String[] args) {
  
  int[] num = new int[10]; // 배열 값 전부 0 {0, 0, 0, 0, ... 0}
  
  for(int i=0; i<num.length; i++) {
   num[i] = (int)(Math.random() * 20); // 0~19 = double 0.0 * 20 <= ran < 0.xxxx * 20

                                                 // Math.random() 함수는 자료형이 double이므로 int형(정수형)으로 형 변환을 해줘야 한다.
   System.out.print(num[i] + ", ");
  }
  System.out.println();
  
  // 배열에 들어가 있는 값 중에서 최소값과 최대값을 구하기
  int min = num[0]; // min 값과 max 값의 비교를 위해 초기값 0이 아닌, "0번방"과 비교한다.
  int max = num[0];
  
  // for 문을 통해 계속해서 비교함, max/min 값에 현재 num[0] 값을 넣어둔 상태이니 배열의 인덱스 번호는 1부터 비교함.
  for(int i=1; i<num.length; i++) {
    // 최소값
    if(num[i] < min) {
     min = num[i];
    }
    // 최대값
    if(num[i] > max) {
     max = num[i];
    }
  } System.out.println("min : " + min + "\nmax : " + max);
  
 }

 

#자바 #BufferedReader #Method #do ~ while

 

public static void main(String[] args) throws NumberFormatException, IOException {
  
  
  // 국어, 영어, 수학 점수 입력 받아 총점, 평균 구하기
  BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  
  int kor = getScore("국어",reader); // 메서드 호출
  int eng = getScore("영어",reader);
  int math = getScore("수학",reader);

  
  int total = kor + eng + math;
  float avg = total/3.0F;
  
  System.out.println("===== 기말고사 성적표 =====");
  System.out.println("국어\t 영어\t 수학\t 총점\t 평균");
  System.out.printf("%d\t %d\t %d\t %d\t %.2f", kor, eng, math, total, avg);
 }
 
 // 모듈화(메서드 선언) -> 선언을 바꾸지 않는 것이 좋다.
 public static int getScore(String subject, BufferedReader reader) throws NumberFormatException, IOException {
  int score = 0;
  do {
   System.out.print(subject + " : ");
   score = Integer.parseInt(reader.readLine());
   if(score <0 || score > 100) {
    System.out.println("점수는 0 ~ 100 범위 내의 숫자로 입력해주세요.");
   }
  }while(score < 0 || score > 100);
  return score;
 }

#자바 #Method #add #max

 

 public static void main(String[] args) {
  
  int x = 10;
  int y = 20;
  
  int sum = add(x,y); // 메서드 호출(call)
  System.out.println("sum = " + sum);
  
  int maxNum = max(x,y);
  System.out.println("maxNum = " + maxNum); // 메서드 호출(call)
  System.out.println("큰 수 = " + max(152,156)); // 당연히 이렇게, 따로 변수에 담지 않고 바로 사용도 가능하다
 }
 
 // public(해당 메소드를 호출 할 수 있는 접근 제한자)
 // public > protected > default(아무것도 적지 않는 경우) > private
 /* 누구나 접근 가능 > 같은 패키지(폴더) 내 접근 가능 cf. 상속 관계에선 가능 > 같은 패키지(폴더) 내 접근 가능
     > 외부(클래스)에서 접근 불가, 오직 자기 자신(클래스)만 접근 가능 */
 
 // 메서드 선언(덧셈)


 public static int add(int a, int b) {
  
  int result = a + b;
  return result; // 결과값, Output
 }


 // 메서드 선언(삼항 연산자를 사용해 최대값 구하기)

 // return x >= y ? x : y;  => x가 y보다 크거나 같으면 x 반환(참,True), x가 y보다 작으면 y 반환(거짓,false)

 public static int max(int x, int y) {
  return x >= y ? x : y;
  
 }

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

public static void main(String[] args) throws NumberFormatException, IOException {
  
  // 년와 월을 입력 받아 달력을 출력
  BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
  
  System.out.print("년을 입력해주세요 : ");
  int year = Integer.parseInt(read.readLine());
  
  System.out.print("월을 입력해주세요 : ");
  int month = Integer.parseInt(read.readLine());
  
  // 해당 월 첫번째 날짜(1일)가 무슨 요일인지 구하기
  // 서기 2018년 태양력(그레고리력), 1년(365일) 일주일 7일 => 365 % 7 == 1
  /*
     1년 1월 1일 : 월요일
     2년 1월 1일 : 화요일
     3년 1월 1일 : 수요일
     4년 1월 1일 : 목요일(윤년 - 366일 => 366 % 7 == 2)
     5년 1월 1일 : 토요일
   */
  
  // 1.1.1 ~ 2018.7.1 : (2017*365) + 올해 7월 1일(31+ 28 + 31 + 30 + 31 + 30 + 1) % 7 = 0~6
  // 1.1.1 ~ 2018.7.1 : 작년(2017*1) + 작년까지 윤년의 발생 횟수
  //                    + 올해 7월 1일(31+ 28 + 31 + 30 + 31 + 30 + 1) + % 7 = 0~6


  String first_day="";
  int month_day =0;
  
  // 해당 년이 윤년인지 판별
  boolean isLeapYear = false; // 평년
  if(year % 4 ==0 && year % 100 !=0 || year % 400 ==0) {
   isLeapYear = true; // 윤년
  }
  // 작년
  int lastYear = year-1;
  // 작년까지 발생한 윤년의 횟수
  int leapYear_cnt = (lastYear/4) - (lastYear/100) + (lastYear/400);
  
  // 해당 월의 1일까지의 일자의 갯수
  int dayOfYear = 1;
  
  for(int i=1; i<month; i++) {
    switch(i) {
     case 1 :
     case 3 :
     case 5 :
     case 7 :
     case 8 :
     case 10 :
      dayOfYear+=31;
      break;
     case 2 :
      if(isLeapYear) {
       dayOfYear+=29; 
      }
      else {
       dayOfYear+=28;
      }
      break;
     default : dayOfYear+=30; break;
     
    }
      
    
  }  // 해당 월의 첫번째 날짜의 요일
    int dayOfweek = (lastYear + leapYear_cnt + dayOfYear)%7;
    

    // 월에 따른 날짜 출력 조건
    int lastDay = 0;
    if(month == 4 || month == 6 || month == 9 || month == 11) {
     lastDay = 30;
    }
    else if(month == 2) {
     lastDay = isLeapYear ? 29 : 28;
    }
    else {
     lastDay = 31;
    }
    
    System.out.printf("%d년 %02d월\n", year, month);
    System.out.printf("일\t월\t화\t수\t목\t금\t토\n");
    // 공백 출력
    for(int i =0; i<dayOfweek; i++) {
     System.out.print("\t");
    }
    // 날짜 출력
    for(int i = 1; i<=lastDay; i++) {
     System.out.print(i + "\t");
     if((dayOfweek + i)%7 ==0) {
      System.out.println();
     }
    }
    
    /*switch(dayOfweek) {
     case 0 : first_day = "일요일"; break;
     case 1 : first_day = "월요일"; break;
     case 2 : first_day = "화요일"; break;
     case 3 : first_day = "수요일"; break;
     case 4 : first_day = "목요일"; break;
     case 5 : first_day = "금요일"; break;
     case 6 : first_day = "토요일"; break;
    }*/

    
  
 }

+ Recent posts