import java.util.Arrays;

import java.util.Scanner;


class MathScore implements Comparable<MathScore>

{

String name;

int score;


// 생성자

public MathScore(String name, int score)

{

this.name = name;

this.score = score;

}


public String toString()

{

// 이름과 점수로 구성된 문자열을 반환하는 코드

return name + ", " + score;

}


public int compareTo(MathScore m)

{

return score - m.score;

}

}


public class EnglishScore implements Comparable<EnglishScore>

{

String name;

int score;


// 생성자

public EnglishScore(String name, int score)

{

this.name = name;

this.score = score;

}


public String toString()

{

// 이름과 점수로 구성된 문자열을 반환하는 코드

return name + ", " + score;

}


public int compareTo(EnglishScore e)

{

return score - e.score;

}


static <T> T findBest(T[] a)

{

Arrays.sort(a);

int length = a.length;

return a[length - 1];

}


static <T> T findScore(T[] a, String name)

{

int length = a.length;

for (int i = 0; i < length; i++)

{

if (a[i].toString().substring(0, name.length()).equals(name))

return a[i];

}

return null;

}


public static void main(String[] args)

{


EnglishScore[] ea =

{ new EnglishScore("김삿갓", 77), new EnglishScore("장영실", 88), new EnglishScore("홍길동", 99) };

MathScore[] ma =

{ new MathScore("김삿갓", 80), new MathScore("장영실", 98), new MathScore("홍길동", 70) };

String name = null;


Scanner sc = new Scanner(System.in);


System.out.print("이름 입력 : ");

name = sc.nextLine();

System.out.println("영어 최고 점수 : " + findBest(ea));

System.out.println("수학 최고 점수 : " + findBest(ma));


try

{

System.out.println("영어 점수 : " + findScore(ea, name));

System.out.println("수학 점수 : " + findScore(ma, name));

} catch (NullPointerException e)

{

System.out.println("명령행 인자가 없습니다.");

}

}

}


이건 코드 전문이고 값을 입력했을 때 반환 값이 Null이면 System.out.println("명령행 인자가 없습니다."); 이게 나와야되는데 절대 안나오네요; 방법좀ㅠㅠ 6시간째 잠도 못자고 과제합ㅂ니다 ㅠㅠ