728x90
로또 번호 생성기
문제 요점 : 한클래스 내에서 만든다.
로또 번호를 정렬하는 메서드를 따로 만들어서 구현할것.
메서드는static 으로 정의 하여 사용.
정렬 메서드는 6개의 정수가 인자로 받아 정렬한다.
즉 , 정렬에 대한 메서드가 배열을 인자로 받아야한다는 의미였다.
public static void lottoSort(int [] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = i+1; j < arr.length; j++) {
if (arr[i]>arr[j]) {
int tem = arr[i];
arr[i] = arr[j];
arr[j] = tem;
}
}
}
}
public static void lottoSortReverse(int [] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = i+1; j < arr.length; j++) {
if (arr[i]<arr[j]) {
int tem = arr[i];
arr[i] = arr[j];
arr[j] = tem;
}
}
}
}
이 메서드를 하나로 합쳐 표현했다.
public static void lottoSort(int [] arr, String s) {
for (int i = 0; i < arr.length; i++) {
for (int j = i+1; j < arr.length; j++) {
if (s=="오름차순" ?arr[i]>arr[j] : arr[i]<arr[j]) {
int tem = arr[i];
arr[i] = arr[j];
arr[j] = tem;
}
}
}
}
로또 번호를 생성하는 메서드
public int[] lottoarr(int arr[]) {
int lotto[] = arr;
Random random = new Random();
for (int i = 0; i < lotto.length; ) {
boolean bool = true;
int randomNumber = random.nextInt(45)+1;
for (int j : lotto) {
bool = randomNumber !=j; //같지 않아야 true , 같으면 false
if (randomNumber==j) break; //false 일때 멈추고 다시 진행되야함.
}
if (bool) { // 전부 같지 않아서 true 가 떨어진다면 실행할 실행문
lotto[i] = randomNumber ;
i++;
}
}
return lotto;
}
중복값을 bool 이라는 boolean 값으로 체크한후 중복되지 않으면 , i의 값을 증가시켰다.
- 메인 메서드 의 실행
public static void main(String[] args) {
Ex02_CallByRef_Lotto lotto = new Ex02_CallByRef_Lotto();
int result[] = lotto.lottoarr(new int [6]);
System.out.println("=====sort 전====");
for (int i : result) {
System.out.print(i+" ");
}
System.out.println();
System.out.println("=====sort 후==== lottoSort(result);");
lottoSort(result);
for (int i : result) {
System.out.print(i+" ");
}
System.out.println();
System.out.println("=====sort 후==== lottoSortReverse(result);");
lottoSortReverse(result);
for (int i : result) {
System.out.print(i+" ");
}
System.out.println();
System.out.println("=====sort 후==== lottoSort(result,\"오름차순\");");
lottoSort(result,"오름차순");
for (int i : result) {
System.out.print(i+" ");
}
System.out.println();
System.out.println("=====sort 후==== lottoSort(result,\"내림차순\");");
lottoSort(result,"내림차순");
for (int i : result) {
System.out.print(i+" ");
}
}
학생 인스턴스 5개를 배열에 담아 성적순으로 출력.
문제 요점 : Student Class 정의.
인스턴스 5개를 배열로 담음.
성적순으로 출력
멤버 변수(privite) : id , name , 과목 3가지(java , spring , mySQL)
생성자로 초기화 할것.
출력 순서가 성적순
-출력 모양
no : 1....
id :
name :
점수 :
합계 :
평균 :
1. student 클래스를 만들고 변수 정의 , setter , getter , 생성자 만들기
class Student {
private String id;
private String name;
private int java;
private int spring;
private int mysql;
// 기본 생성자
public Student() {
}
// 초기화 생성자
public Student(String id, String name, int java, int spring, int mysql) {
this.id = id;
this.name = name;
this.java = java;
this.spring = spring;
this.mysql = mysql;
}
// getter 및 setter 메서드
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getJava() {
return java;
}
public void setJava(int java) {
this.java = java;
}
public int getSpring() {
return spring;
}
public void setSpring(int spring) {
this.spring = spring;
}
public int getMysql() {
return mysql;
}
public void setMysql(int mysql) {
this.mysql = mysql;
}
public double average() {
int add = java + spring + mysql;
return add / 3.0;
}
// toString 메서드
@Override
public String toString() {
return " [id=" + id + "\n name=" + name +
"\n 성적 : java=" + java + ", spring=" + spring + ", mysql=" + mysql +
"\n 합계 : " + (java + spring + mysql) +
"\n 평균 : " + average() +
"]";
}
}
조금 길지만 자동으로 생성하고 toString 부분만 내가 원하는 모양으로 조금 변경해 주었다.
2. 배열을 정렬할 sort 메서드 만들기
public static void studentSort(Student[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i].average() < arr[j].average()) {
Student temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
이 부분에서 중요했던 부분은 배열 타입이 student 배열인 것이다.
그 부분을 조심하며 만들어 주었다.
3. 인스턴스 생성과 sort 메서드 까지의 사용
Student st1 = new Student("일번", "단무지", 10, 20, 30);
Student st2 = new Student("이번", "오이", 50, 20, 30);
Student st3 = new Student("삼번", "당근", 50, 55, 56);
Student st4 = new Student("사번", "계란", 32, 12, 50);
Student st5 = new Student("오번", "우엉", 50, 100, 100);
Student[] studentList = {st1, st2, st3, st4, st5};
studentSort(studentList);
student 타입의 배열을 담아 , sort 메서드를 사용 하였다.
4. 출력을 위한 forEach
int count = 1;
for (Student student : studentList) {
System.out.println("no :"+ count);
System.out.println(student);
System.out.println();
count++;
}
'Developer > JAVA' 카테고리의 다른 글
JAVA , 상속관계 is-a (0) | 2024.08.06 |
---|---|
JAVA , 클래스간의 관계 : use , has, is (0) | 2024.08.06 |
JAVA , 접근 제어자 : 설정자와 접근자 (0) | 2024.08.05 |
JAVA , static 과 instance (0) | 2024.08.04 |
JAVA , 초기화 블럭(init) 과 생성자 , this (0) | 2024.08.04 |