자바 성적 관리 프로그램 인데요.. 주석좀 달아서 설명해주세요..ㅠ
속성으로 배우라고, 교수님이 내주신 소슨데;;
당최 뭐가 뭔 소린지...ㅠㅜ
이제겨우 사칙연산 겨우겨우 이해하나 싶었는데, 또다른...ㅠ
소스에 주석과 함께 왜 이런가 설명도 좀 곁들여주시면 감사하겠습니다.. 꾸벅..ㅠㅜ 흑...
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까지의 숫자로 입력해주세요");
}
}
}
}
혹시 다른 궁금하신 점이 있으시면 쪽지 날려주세요 자세히 답변드리도록 하겠습니다.
'프로그래밍 > 자바(JAVA)' 카테고리의 다른 글
[자바/JAVA] 자바 클래스 객체 느그들 머꼬! (79) | 2012.06.22 |
---|---|
[자바] 유클리드 알고리즘(최대공약수 찾기) (2) | 2012.05.10 |
[자바] 프로그래머의 십계명 (0) | 2012.05.10 |
[자바] 달력프로그램 알고리즘에 대해.. (2) | 2012.05.10 |
[자바 질문] 자바배열에 관해서 질문이 있습니다. (0) | 2012.05.09 |
[자바 질문] 자바 문제좀 풀어주세요!! (0) | 2012.05.09 |
[자바 질문] 자바 가비지 콜렉션 질문드립니다. (0) | 2012.05.09 |
[자바/JAVA] 자바 - 피라미드 만들기 + 모래시계 만들기 소스 (0) | 2012.05.04 |
[자바/JAVA] 자바 한글형태의 숫자를 숫자로 바꾸기 (0) | 2012.05.04 |