배열을 거꾸로 만드는 메소드
-
게시물 수정 , 삭제는 로그인 필요
안녕하세요. 배열을 거꾸로 만드는 메소드를 만들다가 막혀 질문합니다.
class StudentList {
private Student std[];
private int number;
// 생성자 매개변수가 없으면 배열 크기가 100이 되도록 생성
public StudentList() {
number = 0;
std = new Student[100];
}
// 생성자: 배열의크기가 n이 되도록 생성
public StudentList(int n) {
std = new Student[n];
}
// i번째 학생을 return
public Student StudentAt(int i) {
if (i < number)
return std[i];
return null;
}
// 학생추가
public void append(Student s) {
if (number < std.length)
std[number++] = s;
else
System.out.println("Error");
}
// nm과 일치하는 이름의 학생 반환
public Student getByName(String nm) {
Student abc = null;
for (int i = 0; i < number; i++) {
if (std[i].getName().equals(nm)) {
abc = std[i];
break;
}
}
return abc;
}
// 배열 출력
public void print() {
// for (Student s : std)
// System.out.println(s);
for (int i = 0 ; i < number ; i++)
System.out.println(std[i]);
}
// sort를 위한 메서드
private void swap(int i, int j) {
int tmp = std[i].getScore();
std[i].changeScore(std[j].getScore());
std[j].changeScore(tmp);
tmp = std[i].getId();
std[i].setId(std[j].getId());
std[j].setId(tmp);
String ts = std[i].getName();
std[i].setName(std[j].getName());
std[j].setName(ts);
}
// 전체 학생의 평균을 반환
public double average() {
int sum = 0;
for (int i = 0; i < number; i++) {
sum += std[i].getScore();
}
return (double) sum / number;
}
// 성적순으로 정렬
public void sortByScore() {
int i, j, min;
for (i = 0; i < number - 1; i++) {
min = i;
for (j = i+1; j < number; j++) {
if (std[j].getScore() < std[min].getScore())
min = j;
}
swap(i, min);
}
}
// 배열을 현재 순서의 거꾸로 만드는 메소드
public void reverse() {
for (int i = 0; i < std.length / 2; i++) {
swap(1, (std.length - 1) - i);
}
}
마지막에 //배열을 현재 순서의 거꾸로 만드는 메소드가 제가 만든 코드가 아무리 봐도 틀린 것 같은데.. 어떻게 바꿔야할까요??
안녕하세요. 배열을 거꾸로 만드는 메소드를 만들다가 막혀 질문합니다.
class StudentList {
private Student std[];
private int number;
// 생성자 매개변수가 없으면 배열 크기가 100이 되도록 생성
public StudentList() {
number = 0;
std = new Student[100];
}
// 생성자: 배열의크기가 n이 되도록 생성
public StudentList(int n) {
std = new Student[n];
}
// i번째 학생을 return
public Student StudentAt(int i) {
if (i < number)
return std[i];
return null;
}
// 학생추가
public void append(Student s) {
if (number < std.length)
std[number++] = s;
else
System.out.println("Error");
}
// nm과 일치하는 이름의 학생 반환
public Student getByName(String nm) {
Student abc = null;
for (int i = 0; i < number; i++) {
if (std[i].getName().equals(nm)) {
abc = std[i];
break;
}
}
return abc;
}
// 배열 출력
public void print() {
// for (Student s : std)
// System.out.println(s);
for (int i = 0 ; i < number ; i++)
System.out.println(std[i]);
}
// sort를 위한 메서드
private void swap(int i, int j) {
int tmp = std[i].getScore();
std[i].changeScore(std[j].getScore());
std[j].changeScore(tmp);
tmp = std[i].getId();
std[i].setId(std[j].getId());
std[j].setId(tmp);
String ts = std[i].getName();
std[i].setName(std[j].getName());
std[j].setName(ts);
}
// 전체 학생의 평균을 반환
public double average() {
int sum = 0;
for (int i = 0; i < number; i++) {
sum += std[i].getScore();
}
return (double) sum / number;
}
// 성적순으로 정렬
public void sortByScore() {
int i, j, min;
for (i = 0; i < number - 1; i++) {
min = i;
for (j = i+1; j < number; j++) {
if (std[j].getScore() < std[min].getScore())
min = j;
}
swap(i, min);
}
}
// 배열을 현재 순서의 거꾸로 만드는 메소드
public void reverse() {
for (int i = 0; i < std.length / 2; i++) {
swap(1, (std.length - 1) - i);
}
}
마지막에 //배열을 현재 순서의 거꾸로 만드는 메소드가 제가 만든 코드가 아무리 봐도 틀린 것 같은데.. 어떻게 바꿔야할까요??