본문 바로가기

프로그래밍/자바(JAVA)

[자바/JAVA]자바 성적 관리 프로그램 인데요.. 주석좀 달아서 설명해주세요..ㅠ

자바 성적 관리 프로그램 인데요.. 주석좀 달아서 설명해주세요..ㅠ


속성으로 배우라고, 교수님이 내주신 소슨데;;

 

당최 뭐가 뭔 소린지...ㅠㅜ

 

이제겨우 사칙연산 겨우겨우 이해하나 싶었는데, 또다른...ㅠ

 

소스에 주석과 함께 왜 이런가 설명도 좀 곁들여주시면 감사하겠습니다.. 꾸벅..ㅠㅜ 흑...

 

import java.io.*;

public class Score
{
 public static void main(String args[])
 {
 int intMenu = 0;
 boolean boolFlag = true;

 String strItem[] = new String[7];
 String strName="";
 int intValue[] = new int[5];
 double doubleAvg = 0;

 strItem[0]="이름";
 strItem[1]="학번";
 strItem[2]="국어";
 strItem[3]="영어";
 strItem[4]="수학";
 strItem[5]="총점";
 strItem[6]="평균";

 DataInputStream dis = new DataInputStream(System.in);

 while(boolFlag) {
  System.out.println("\n======================");
  System.out.println("1. 성적 입력");
  System.out.println("2. 성적표 출력");
  System.out.println("3. 종료");
  System.out.println("=======================");
  System.out.print("메뉴의 번호를 선택하세요(1-3) : \t");
  try
  {
   intMenu = Integer.parseInt(dis.readLine());
  }catch (Exception e) {
      System.out.println("1-3까지의 숫자로 입력해주세요.");
   continue;
  }
 
  switch(intMenu) {
   case 1:
    System.out.println("\n[성적정보 입력]");
   try
   {
    System.out.println(strItem[0]+" : ");
    strName = new String(dis.readLine().getBytes("8859_1"),"KSC5601");

   for(int i=0; i< intValue.length-1; i++)
    {
       System.out.print(strItem[i+1]+" : ");
       intValue[i]=Integer.parseInt(dis.readLine());
       }
    intValue[4] = intValue[1]+intValue[2]+intValue[3];
    doubleAvg = intValue[4]/3.0;
   }catch (Exception e) {
    continue;
   }
   break;
   case 2:
    if(strName.equals("")) {
    System.out.println("성적정보를 먼저 입력해야 합니다.");
    continue;
   }
   System.out.println("\n[성적표 츨력]");
   System.out.println(strItem[0]+" : ");
   System.out.println(strName);
   for(int i=0; i < intValue.length;i++) {
    System.out.print(strItem[i+1]+" : ");
    System.out.print(intValue[i]);
   }
   System.out.print(strItem[6]+" : ");
   System.out.println(doubleAvg);
   break;
   case 3:
    System.out.println("프로그램을 종료합니다!");
   boolFlag = false;
   break;
   default:
    System.out.println("1-3까지의 숫자로 입력해주세요");
  }
 }
 }
}

변 


import java.io.*;

public class Score
{
 public static void main(String args[])
 {
 int intMenu = 0;
 boolean boolFlag = true;

 String strItem[] = new String[7];

//출력시 제목부분에 대한 문자열을 저장하기 위한 String 배열선언.
 String strName="";
 int intValue[] = new int[5];
 double doubleAvg = 0;

 strItem[0]="이름";
 strItem[1]="학번";
 strItem[2]="국어";
 strItem[3]="영어";
 strItem[4]="수학";
 strItem[5]="총점";
 strItem[6]="평균";

//String 배열에 각각의 문자열로 초기화 한다.

 DataInputStream dis = new DataInputStream(System.in);

//Primitive Type(즉 기본 자료형) 을 키보드로 받기위한 참조변수 dis를 선언

 while(boolFlag) {//계속적인 입력을 받기 위해 반복문을 수행 합니다.
  System.out.println("\n======================");
  System.out.println("1. 성적 입력");
  System.out.println("2. 성적표 출력");
  System.out.println("3. 종료");
  System.out.println("=======================");
  System.out.print("메뉴의 번호를 선택하세요(1-3) : \t");

//메뉴를 보여줍니다.
  try //IO예외가 발생할수 있으니 예외 처리를 합니다.
  {
   intMenu = Integer.parseInt(dis.readLine());
  }catch (Exception e) {
      System.out.println("1-3까지의 숫자로 입력해주세요.");
   continue;
  }
 
  switch(intMenu) {

//메뉴에 따른 실행이 다르므로 제어문을 통해 수행을 하게 됩니다.
   case 1:
    System.out.println("\n[성적정보 입력]");
   try
   {
    System.out.println(strItem[0]+" : ");
    strName = new String(dis.readLine().getBytes("8859_1"),"KSC5601");

//J2SE 1.5 기준으로 했을때. DataInputStream 클래스의 readLine()는 Deprecated 되어 있는 메소드 입니다.

//즉 사용안하는게 좋은 놈인데 왜 사용되었는지는 모르겠네요.

//new String(dis.readLine().getBytes("8859_1"), "KSC5601") 은 단순히 문자열을 생성하는데 인코딩을 한글을 받을수 있게 바꾸어주는 String 생성자 입니다.

   for(int i=0; i< intValue.length-1; i++)

//학번 및 성적을 입력 받습니다.
    {
       System.out.print(strItem[i+1]+" : ");
       intValue[i]=Integer.parseInt(dis.readLine());
       }
    intValue[4] = intValue[1]+intValue[2]+intValue[3];

//마지막 자리에는 총점을 구하며
    doubleAvg = intValue[4]/3.0;

//이놈은 평균을 구합니다.
   }catch (Exception e) {
    continue;
   }
   break;
   case 2:
    if(strName.equals("")) {
    System.out.println("성적정보를 먼저 입력해야 합니다.");

//출력을 수행하는데 이름 입력이 되어 있지 않으면 정보를 입력 받게 합니다.
    continue;
   }

//아래는 성적 정보를 출력하네요.
   System.out.println("\n[성적표 츨력]");
   System.out.println(strItem[0]+" : ");
   System.out.println(strName);
   for(int i=0; i < intValue.length;i++) {
    System.out.print(strItem[i+1]+" : ");
    System.out.print(intValue[i]);
   }
   System.out.print(strItem[6]+" : ");
   System.out.println(doubleAvg);
   break;
   case 3:

//3번을 선택했을 경우 boolFlag를 false로 바꾸면서 while문을 종료 합니다.
    System.out.println("프로그램을 종료합니다!");
   boolFlag = false;
   break;
   default:
    System.out.println("1-3까지의 숫자로 입력해주세요");
  }
 }
 }
}

 

혹시 다른 궁금하신 점이 있으시면 쪽지 날려주세요 자세히 답변드리도록 하겠습니다.