냥코딩쟝
public static void main(String[] args) throws IOException {    
       // [한 반에 30명 학생의 이,국,영,수,총,평,등 입력/등수/출력 ]      
       final  int STUDENT_COUNT = 30; 
      
       // 클래스(객체) 배열
      Student[] students = new Student[STUDENT_COUNT];
      
      int cnt = 0 ;    
      char con = 'y';
       
      String name;
      int kor, eng, mat, tot, rank;
      double avg;
      
      Scanner scanner = new Scanner(System.in);
      
      do {
         // 입력.
         System.out.print("> 이름 국어 영어 수학 정보 입력 ? ");
         name = getName();  
         kor =  getScore();    
         eng =  getScore();  
         mat =  getScore();   
         
         tot = kor + eng + mat;
         avg = (double)tot/3;
         rank = 1;
         
         students[cnt] = new Student();  // 4
         
         students[cnt].no = cnt + 1;
         students[cnt].name = name;
         students[cnt].kor = kor;
         students[cnt].eng = eng;
         students[cnt].mat = mat;
         students[cnt].tot = tot;
         students[cnt].avg = avg;
         students[cnt].rank = rank;
         
         cnt++;  // 1
         
         // 
         System.out.print("> 학생 입력 계속 ? ");
         con = (char)( System.in.read() );
         System.in.skip(System.in.available());
      } while ( Character.toUpperCase(con) == 'Y' );
       
      // 등수처리
      // 1. 등수 처리하는 메섣 :   getRank()
      // 2. 매개변수
      // 3. 리턴값, 리터자료형
      for (int i = 0; i < cnt; i++) {    
         students[i].rank = getRank(i+1, students);
      }
      
      System.out.printf("> 입력받은 학생수 : %d명 \n",  cnt ); 
      for (int i = 0; i < cnt ; i++) {
          System.out.println(    students[i].getStudentInfo() );
      }
      
       
      
   } // main
   
    // 4:05 수업 시작~
   // 학생의 번호를 입력하면 등수를 반환하는 함수 선언
   public static int getRank( int no, Student[] students) {
      // 총점
      int tot = students[no-1].tot;
      // 모든 학생의 총점 비교  tots 배열
      int rank = 1; 
      for (int j = 0; j < students.length; j++) { 
         if( students[j]  == null ) break;
         if(   tot < students[j].tot )  rank++;   //  students[j].tot X         NullPointException
      } 
      return rank;
   }

   public static int getScore() {    
      return     (int)( Math.random()*101 ) ;
   }
   
   public static String getName() { 
      char [] nameArr = new char[3];
      Random rnd = new Random();
      for (int i = 0; i < nameArr.length; i++) {
          nameArr[i] = (char)( rnd.nextInt('힣' - '가' + 1) + '가' );
      } 
      String name = new String( nameArr );
      return name;
   }
   
   private static int getTotalScore() {      
      return     (int)( Math.random()*301 ) ;
   }
   
   public static String getAlphabetName(int len) { 
      char [] nameArr = new char[len];
      Random rnd = new Random();
      int index = 0;
      while( index < len) { 
          int code =  rnd.nextInt('z' - 'A' + 1) + 'A' ;        
          if(  Character.isAlphabetic(code)  )  {
             nameArr[index++] = (char)code;
          } // if
      } // while 
      String name = new String( nameArr );
      return name;
   }

} // class
 
public static void main(String[] args) {
   // 클래스 2차원 배열
   Student [][] students = new Student[3][30];}
   }
public static void main(String[] args) {
      /*
       *  1. 클래스 앞에 붙는 접근지정자, 기타제어자 설명. ( 암기 ) 
       *  2. 멤버( 필드, 메서드, 생성자 constructor )   앞에 붙는 접근지정자 설명 ( 암기 ) 
       *      1) public               - 패키지 내부 /외부 어디서나 접근(참조) 가능
       *      2) default           - 같은 패키지 내부에서만 접근(참조) 가능
       *      3) protected      -  defulat + 상속( 다른 패키지의 자식 클래스에 접근(참조) 가능 )
       *      4) private           -  같은 클래스 내에서만 접근(참조) 가능
       *      
       *      범위 :    public        >         protected      >     default     >     private
       *      
       *      지역변수에는 접근 지정자를 사용할 수 없다. 
       * */

      // public days14.Time 클래스  - 패키지 내부/외부 어디서나 참조/상속 가능 
      //           days14.Ex08.main(){}  같은 패키지 안.. 테스트
      Time t = new Time();
      // t.멤버 ( 필드, 메서드 )
      // t.hour      O         public 
      // t.minute  O         defalut
      // t.second   O         protected
      // t.nano        O   public
      
      // t.milisecond  X   private  같은 클래스 에서만 참조(접근) 가능
      
      
      //           days01.Ex01.main(){}    다른 패키지       테스트
      
      
   } // main

} // class
public class Ex09 {
   
   // [ 멤버 변수 == 필드 ]
   // "인스턴스 변수" 선언 형식
   // [접근지정자] [ 기타제어자]   자료형  필드명;
   public  String name = null;
   public int age = 0;
   public boolean gender = false;
   
   // "클래스 변수"
   // static 기타제어자가 붙어있는 필드
   public static double PI = 3.141592;

   
   // 멤버 함수 == 메서드 
   public static void main(String[] args) {
      /*
       *  [ 변수 종류]  - 선언되는 위치를 기준으로 변수 구분
       *  1. 지역변수 - 해당 영역(지역)에서만 사용되는 변수/ 변수 선언문을 실행할때 /   해당 영역 빠져나올때
       *  
       *   필드( field )
       *  2. 인스턴스 변수 -                                                 / 인스턴스가 생성될 때 / 인스턴스 소멸될 때
       *      -  초기화 하지 않아도 그 자료형의 기본값으로 초기화 되어져 있다. 
       *  3. 클래스 변수                                                        / 해당 클래스가 메모리에 올라갈때 / 프로그램 종료할때
       *                                                                              ( 프로그램 시작할 때 )
       * */

      int age;  // 지역변수
   } // main

} // class

 

package days14;

// package( == default ) 접근지정자를 선택.
class Person {
   
   // fields
   public String name;
   public int age;
   
   // methods
   public void walk() {
      System.out.println("사람이 걷는다.");
   }
   public void run() {
      System.out.printf("%s이 뛴다\n", name);
   }

}

객체 배열 초기화 

 

    public static void main(String[] args) {

      // 저축 클래스 선언 : Save
      // 기업은행 : 보통 예금 통장
      /*
      Save p1 = new Save("김예지", 10000, 0.05);
      Save p2 = new Save("이혜진", 4000, 0.05);
      Save p3 = new Save("박민종", 16000, 0.05);
      Save p4 = new Save("이태규", 65000, 0.05);
      Save p5 = new Save("탁인혁", 1000, 0.05);
      
      // 모든 예금 정보 출력(조회)
      p1.dispSave();
      p2.dispSave();
      p3.dispSave();
      p4.dispSave();
      p5.dispSave();
      */
      
      // 객체(클래스) 배열
      /*
       *  int [] m  = new int[5];
       *  m[0] = 1;
       *  m[1]=2;
       *  m[2] = 3;
       *  m[3]=4;
       *  m[4]=5;
       *  
       *  배열 초기화
       *  int []  m = {  1,2,3,4,5  }
       */
      
      
      /*
      Save [] ps = new Save[5];
      ps[0] = new Save("김예지", 10000, 0.05);
      ps[1] = new Save("이혜진", 4000, 0.05);
      ps[2] = new Save("박민종", 16000, 0.05);
      ps[3] = new Save("이태규", 65000, 0.05);
      ps[4] = new Save("탁인혁", 1000, 0.05);
      */
      
      // 객체 배열 초기화

      Save [] ps = {
             new Save("김예지", 10000, 0.05),
             new Save("이혜진", 4000, 0.05),
             new Save("박민종", 16000, 0.05),
             new Save("이태규", 65000, 0.05),
               new Save("탁인혁", 1000, 0.05)
      } ;
      
      for (int i = 0; i < ps.length; i++) {
         ps[i].dispSave();
      }

   } // main

} // class
public static void main(String[] args) {
      
      MyPoint  p1 = new MyPoint(10, 20);
      // 객체 복사
      MyPoint p2 = p1;      
      test(   p1  );
      
      // 원래 객체는 유지시키고  테스트 / ~ 
      // p1 객체 복제( clone )
      MyPoint p3 = new MyPoint( p1.x,  p1.y );

   } // main
   
   public static void test( MyPoint p) {  // 객체 복사..
      
   }

} // class
profile

냥코딩쟝

@yejang

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!