2008년 7월 20일 일요일

java 기초질문 - 성적표 출력하기







import javax.swing.*;
public class A4 {
public static void main (String [] args) {
processStudent();
System.exit (0);
}
public static String getStudentName ( ) {
String input = JOptionPane.showInputDialog ("Enter Student name:");
System.out.println ("Name: " + input);
return input;
}
public static int getStudentNumber ( ) {
String input = JOptionPane.showInputDialog ("Enter Student number:");
isValidStudentNumber (input);
return Integer.valueOf(input);
}
public static boolean isValidStudentNumber ( String numStr ) {
boolean bool = true;
int parseInt = Integer.parseInt (numStr);
if (parseInt < 0) {
JOptionPane.showMessageDialog (null, "Invaild Student Number!");
getStudentNumber ();
} else {
System.out.println ("Student #: " + numStr);
}
return bool;
}

public static double convertGrade ( String gradeStr ) {
double convertGrade = 0;
if (gradeStr.equalsIgnoreCase ("f") gradeStr.equals ("0") ) {
convertGrade = 0;
System.out.println ("Valid grade:" + gradeStr);
// getStudentGrades ();//이부분은 필요없음
} else if (gradeStr.equalsIgnoreCase ("d") gradeStr.equals ("1") ) {
convertGrade = 1;
System.out.println ("Valid grade:" + gradeStr);
// getStudentGrades ();//이부분은 필요없음
} else if (gradeStr.equalsIgnoreCase ("c") gradeStr.equals ("2") ) {
convertGrade = 2;
System.out.println ("Valid grade:" + gradeStr);
// getStudentGrades ();//이부분은 필요없음
} else if (gradeStr.equalsIgnoreCase ("c+") gradeStr.equals ("2.5") ) {
convertGrade = 2.5;
System.out.println ("Valid grade:" + gradeStr);
// getStudentGrades ();//이부분은 필요없음
} else if (gradeStr.equalsIgnoreCase ("b") gradeStr.equals ("3") ) {
convertGrade = 3;
System.out.println ("Valid grade:" + gradeStr);
// getStudentGrades ();//이부분은 필요없음
} else if (gradeStr.equalsIgnoreCase ("b+") gradeStr.equals ("3.5") ) {
convertGrade = 3.5;
System.out.println ("Valid grade:" + gradeStr);
// getStudentGrades ();//이부분은 필요없음
} else if (gradeStr.equalsIgnoreCase ("a") gradeStr.equals ("4") ) {
convertGrade = 4;
System.out.println ("Valid grade:" + gradeStr);
// getStudentGrades ();//이부분은 필요없음
} else if (gradeStr.equalsIgnoreCase ("a+") gradeStr.equals ("4.5") ) {
convertGrade = 4.5;
System.out.println ("Valid grade:" + gradeStr);
// getStudentGrades ();//이부분은 필요없음
} else {
convertGrade = -1;
System.out.println ("Invalid grade:" + gradeStr);
//getStudentGrades ();//이부분은 필요없음
}
return convertGrade;
}

public static double[] getStudentGrades() {

//double [] studentGrades = {0};
int index=0;// 배열의 첨자
double [] studentGrades = new double[100];//배열을 100개 선언
while(true) {
String input = JOptionPane.showInputDialog ("Enter grade:");
if (input.equals ("999") ) {
studentGrades[index]=999;//입력 끝이면 999를 배열에 저장,끝을 의미
return studentGrades;// 처리된 값 전체를 배열로 return
} else {
double temp = convertGrade (input);//convertGrade 로부터 값을 리턴 받음

if( temp!=-1.0 ){//Invalid 가 아니면 값을 배열에 저장
studentGrades[index++]=temp;
}
}
}
}

public static void processStudent() {
double [] studentGradesPrint;
String studentName = "";
int studentNumber = 0;
studentName = getStudentName ();
studentNumber = getStudentNumber ();
studentGradesPrint=getStudentGrades ();
System.out.println ("Name: " + studentName);
System.out.println ("Student #: " + studentNumber);
System.out.print ("Grade List:");
for(int i=0;studentGradesPrint[i]!= 999;i++){//출력
System.out.print (" " + studentGradesPrint[i]+",");
}
}
}
//의문점 쪽지주세요.
문]
성적표 프로그래밍 만들고있습니다.
아직 완전 시작단계라 많은 method를 배우지도 못하였구요 무엇보다 어떻게 해야하는지 잘 모르겠습니다.
일단 무조건 들어가야하는 method는
public static String getStudentName ( String studentName )
public static int getStudentNumber ( int studentNumber )
public static boolean isValidStudentNumber ( String numStr )
public static double convertGrade ( String gradeStr )
public static double[] getStudentGrades()
public static void processStudent()
이거구요 메인 질문은 인풋 순서가 이름 물어보고 다음 학생번호 물어봅니다 그다음 성적을 물어봅니다.
성적을 인풋을 끝내려면 999를 넣으면 인풋이 끝나고 아웃풋이 나와야 합니다.
즉 이름 학생번호 성적순으로 물어본뒤 999를 넣으면 프로그래밍이 끝나야합니다.
예로)
Example Input:
Student Name: Cloney McStudent
Student Number: 1234567
Grades: -1, 55, A+, B, 2.5, F, 1, C, A, 999
Example Output:
Invalid grade: -1
Invalid grade: 55
Valid grade: A+
Valid grade: B
Valid grade: 2.5
Valid grade: F
Valid grade: 1
Valid grade: C
Valid grade: A
Name: Cloney McStudent
Student#: 1234567
Grade List: 4.5, 3.0, 2.5, 0.0, 1.0, 2.0, 4.0
아웃풋 순서가 이런식으로 나와야 합니다. 이럴때 어떻게 해야하는지 알아주세요.
직접 제가 한것을 수정해주시면 좋겠습니다. 도와주세요!!!!
배운 method는 string int double array while if else JOptionPane 이정도겠네요. 이것들로만 만들어주시면
감사하겠습니다. 제 이해를 돕기위해 코멘트까지 써주시면 더욱더 고맙겠습니다. 꼭좀 부탁드립니다.

댓글 없음:

댓글 쓰기

-


Sidewinder


World


FishMusic


LaughingBaby