public class Java6_2 {
public static void main(String[] args) {
Student s = new Student("홍길동", 1, 1, 100, 60, 76);
String student = s.info();
System.out.println(student);
}
}
class Student{
String name;
int ban;
int no;
int kor;
int eng;
int math;
Student(String name, int ban, int no, int kor, int eng, int math) { //생성자
this.name = name;
this.ban = ban;
this.no = no;
this.kor = kor;
this.eng = eng;
this.math = math;
}
public String info() { //학생의 정보를 추가하는 info() 메서드
return name
+ "," + ban
+ "," + no
+ "," + kor
+ "," + eng
+ "," + math
+ "," + (kor + eng + math)
+ "," + ((int) ((kor + eng + math) / 3f * 10 + 0.5f) / 10f);
}
//출력값 : 홍길동, 1, 1, 100, 60, 76, 236, 78.7
}
/**
* Student 클래스에 두 개의 메서드 getTotal()과 getAverage()를 추가하시오
* 출력값 - 이름: 홍길동 총점 : 236 평균 78.7
*/
public class Java6_3 {
public static void main(String[] args) {
Student2 s = new Student2();
s.name = "홍길동";
s.ban = 1;
s.no = 1;
s.kor = 100;
s.eng = 60;
s.math = 76;
System.out.println("이름 : " + s.name);
System.out.println("총점 : " + s.getTotal());
System.out.println("평균 : " + s.getAverage());
}
}
class Student2 {
String name; //멤버변수
int ban;
int no;
int kor;
int eng;
int math;
Student2(){ //기본 생성자
}
Student2(String name, int ban, int no, int kor, int eng, int math) { //생성자
this.name = name; //지역변수(매개변수)
this.ban = ban;
this.no = no;
this.kor = kor;
this.eng = eng;
this.math = math;
}
int getTotal() { //총점을 구하는 메서드
return kor + eng + math;
}
float getAverage() { //평균을 구하는 메서드
return (int)(getTotal() / 3f * 10 + 0.5f) / 10f;
}
public String info() { //학생의 정보를 추가하는 info() 메서드
return name
+ "," + ban
+ "," + no
+ "," + kor
+ "," + eng
+ "," + math
+ "," + (kor + eng + math)
+ "," + ((int) ((kor + eng + math) / 3f * 10 + 0.5f) / 10f); //소숫점 올림, int 형변환으로 인한 정수화
}
}
/**
* 메서드명 : shuffle
* 기능 : 주어진 배열에 담긴 값의 위치를 바꾸는 작업을 반복하여 뒤섞이게 한다. 처리한 배열을 반환한다.
* 반환타입 : int[]
* 매개변수 : int[] arr - 정수값이 담긴 배열
*/
public class Java6_17 {
//인스턴스 변수 존재x
public static int[] shuffle(int[] arr) { //static 메서드 - 메서드 내에 외부 인스턴스변수 존재하지 않음, 매개변수(지역변수)로만 주입
if(arr == null || arr.length == 0) { //유효성 체크 반환
return arr;
}
for (int i = 0; i < arr.length; i++) {
int k = (int) (Math.random() * arr.length); //int로 형변환
int tmp = arr[i]; //arr[i]와 arr[k]의 값을 서로 바꾼다
arr[i] = arr[k];
arr[k] = tmp;
}
return arr;
}
public static void main(String[] args) {
int[] original = {1, 2, 3, 4, 5, 6, 7, 8, 9};
System.out.println(java.util.Arrays.toString(original));
int[] result = shuffle(original);
System.out.println(java.util.Arrays.toString(result));
}
}
/**
* 정의된 메서드를 작성하고 테스트하시오
* 메서드명 : isNumber
* 기능 : 주어진 문자열이 모두 숫자로만 이루어져 있는지 확인한다. 모두 숫자로만 이루어져 있으면 true를 반환하고,
* 그렇지 않으면 false를 반환한다.
* 만일 주어진 문자열이 null이거나 빈 문자열 " " 이라면 false를 반환한다
* 반환타입 : boolean
* 매개변수 : String str - 검사할 문자열
*/
public class Java6_18 {
public static boolean isNumber(String str) {
if (str == null || str.equals("")) {
return false;
}
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i); //반복문을 통해 문자열에서 한 문자씩 차례대로 읽어와 char타입의 변수 ch에 저장한다
if(ch < '0' || ch > '9'){ //읽어온 문자(ch)가 숫자가 아니면 false를 반환한다
return false;
}
}
return true; //boolean 반환값
}
public static void main(String[] args) {
String str = "123"; //문자열
System.out.println(str + "는 숫자입니까?" + isNumber(str));
str = "1234o";
System.out.println(str + "는 숫자입니까?" + isNumber(str));
}
}
/**
* 메서드명 : max
* 기능 : 주어진 int 형 배열의 값 중에서 제일 큰 값을 반환한다
* 만일 주어진 배열이 null 이거나 크기가 0인 경우, -999999를 반환한다
* 반환타입 : int
* 매개변수 : int[] arr - 최대값을 구할 배열
*/
public class Java6_20 {
public static int max(int[] arr) {
if (arr == null || arr.length == 0) { //유효성 체크 - null 이거나 크기가 0인 배열은 -999999를 반환한다
return -999999;
}
int max = arr[0]; //배열의 첫 번째 값으로 최대값을 초기화 한다
for (int i = 1; i<arr.length; i++) { //배열의 두 번째 값부터 비교한다
if(arr[i] > max)
max = arr[i];
//최대값 max를 배열 1번째 값으로 초기화 했으므로 첫번쨰 값은 비교할 필요가 없다
//arr[1]부터 비교하고 그 값이 max보다 크면 그 값을 변수 max에 저장한다
}
return max; //배열의 요소중 가장 큰 값 반환
}
public static void main(String[] args) {
int[] data = {3, 2, 9, 4, 7};
System.out.println(java.util.Arrays.toString(data)); // [3,2,9,4,7]
System.out.println("최대값 : " + max(data)); //최대값 : 9
System.out.println("최대값 : " + max(null)); //null -> -999999
System.out.println("최대값 : " + max(new int[]{})); //크기가 0인 배열 -> -999999
}
}
/**
* 메서드명 : abs
* 기능 : 주어진 값의 절대값을 반환한다
* 반환타입 : int
* 매개변수 : int value
*/
public class Java6_21 {
public static int abs(int value) {
return value >= 0 ? value : -value;
/**
* if(value >= 0) {
* return value;
* } else {
* return -value;
* }
* }
*/
}
public static void main(String[] args) {
int value = 5;
System.out.println(value + "의 절대값 : " + abs(value));
value = -10;
System.out.println(value + "의 절대값 : " + abs(value));
}
}