Search

메서드클래스배열4_문제02_리턴2

대분류
STEP08 메서드
소분류
메서드클래스배열4_문제

영상

문제

package 메서드클래스배열4_문제; /* class Node2 { int number; String name; int price; void print() { System.out.println(number + " " + name + " " + price); } } class Return2 { Node2[] getList(String data) { // [문제1] result 배열에 아래와 같은 형태로 // 데이터를 저장해 리턴하는 메서드를 구현하시오. // 10001 김철수 2670 // 10002 이영희 1950 // 10003 유재석 4080 // 10004 박명수 7130 Node2[] result = null; return result; } Node2 getRank(String data) { // [문제2] 판매금액이 1등인 회원정보를 리턴하는 // 메서드를 구현하시오. Node2 result = null; return result; } } */ public class 메서드클래스배열4_문제02_리턴2_문제 { public static void main(String[] args) { String data =""; data += "10001/김철수/600\n"; data += "10002/이영희/800\n"; data += "10001/김철수/1400\n"; data += "10003/유재석/780\n"; data += "10002/이영희/950\n"; data += "10004/박명수/330\n"; data += "10001/김철수/670\n"; data += "10003/유재석/3300\n"; data += "10002/이영희/200\n"; data += "10004/박명수/6800\n"; data = data.substring(0 , data.length()-1); // 마지막 글삭제 System.out.println(data); Return2 re = new Return2(); Node2[] list = re.getList(data); for(int i = 0; i < list.length; i++) { list[i].print(); } //------------------------------------------------ Node2 rank1 = re.getRank(data); rank1.print(); } }
Java
복사

해설

package 메서드클래스배열4_문제; class Node2 { int number; String name; int price; void print() { System.out.println(number + " " + name + " " + price); } } class Return2 { Node2[] getList(String data) { // [문제1] result 배열에 아래와 같은 형태로 // 데이터를 저장해 리턴하는 메서드를 구현하시오. // 10001 김철수 2670 // 10002 이영희 1950 // 10003 유재석 4080 // 10004 박명수 7130 Node2[] result = null; String[] temp = data.split("\n"); String[][] tempList = new String[temp.length][2]; int size = 0; for(int i=0; i<temp.length; i++) { String[] info = temp[i].split("/"); boolean check = false; for(int j=0; j<size; j++) { if(info[0].equals(tempList[j][0])) { check = true; break; } } if(check == false) { tempList[size][0] = info[0]; tempList[size][1] = info[1]; size += 1; } } result = new Node2[size]; for(int i=0; i<size; i++) { result[i] = new Node2(); result[i].number = Integer.parseInt(tempList[i][0]); result[i].name = tempList[i][1]; for(int j=0; j<temp.length; j++) { String[] info = temp[j].split("/"); if(result[i].number == Integer.parseInt(info[0])) { result[i].price += Integer.parseInt(info[2]); } } } return result; } Node2 getRank(String data) { // [문제2] 판매금액이 1등인 회원정보를 리턴하는 // 메서드를 구현하시오. Node2 result = null; Node2[] nodeList = getList(data); int maxPrice = 0; int maxIndex = 0; for(int i=0; i<nodeList.length; i++) { if(maxPrice < nodeList[i].price) { maxPrice = nodeList[i].price; maxIndex = i; } } result = nodeList[maxIndex]; return result; } } public class 메서드클래스배열4_문제02_리턴2_정답 { public static void main(String[] args) { String data =""; data += "10001/김철수/600\n"; data += "10002/이영희/800\n"; data += "10001/김철수/1400\n"; data += "10003/유재석/780\n"; data += "10002/이영희/950\n"; data += "10004/박명수/330\n"; data += "10001/김철수/670\n"; data += "10003/유재석/3300\n"; data += "10002/이영희/200\n"; data += "10004/박명수/6800\n"; data = data.substring(0 , data.length()-1); // 마지막 글삭제 // System.out.println(data); Return2 re = new Return2(); Node2[] list = re.getList(data); for(int i = 0; i < list.length; i++) { list[i].print(); } //------------------------------------------------ System.out.println(); Node2 rank1 = re.getRank(data); rank1.print(); } }
Java
복사