개발 일기

참조자료형과 배열 본문

Java&Spring/Java

참조자료형과 배열

flow123 2022. 3. 10. 15:12

Student 클래스 생성자를 만들고,

 

package c.inheritance;

public class Student {
  public String name; 
  public String address; 
  public String phone; 
  public String email; 

  public Student(String name) {
    this.name = name; 
    }
    
  public Student(String name, String address, String phone, String email) {
    this.name = name; 
    this.address = address; 
    this.phone = phone; 
    this.email = email; 
  }  
  
  @Override
  public String toString() {
    return name +" "+address +" "+phone+" "+email;
    }
  }

이 student 생성자를 활용해서 값을 add 하고 print하는 ManageStduent 를 만들었다. 

package c.inheritance; 

public class ManageStudent {
  public static void main(String[] args) {
    String[] student = null; 
    student.addStudent(); 
  }
  
  public Student[] addStudent() {
    String[] student = new Student [3];
    Student[0] = new Student("Lim"); 
    Student[1] = new Student("Min"); 
    Student[2] = new Student("Sook","Seoul","010XXXXXXX","ask@godofjava.com");
    return student;  
    }
    
    public Student printStudents(String[] student) {
      for (String data:student){
        System.out.println(data); 
        }
      }
  
  }

 

 

에러 메시지를 들여다보면, cannot find symbol 이라고 나오는데. 

cannot find symbol 은 지정된 변수나 메서드를 찾을 수 없다는 뜻이다 

선언되지않은 변수를 사용하거나 or 변수나 메소드의 이름을 잘못사용했을때 발생한다. 

객체를 만들어서 선언하고 메서드를 사용해야하는데 그렇지 않았기 때문에 addStudent() 라는 메서드를 불러올 수 없다. 

 

package c.inheritance; 

public class ManageStudent {
  public static void main(String[] args) {
    Student[] student = null; 
    ManageStudent sample = new ManageStudent(); 
    student = sample.addStudent();  // student °´Ã¼¿¡ µ¥ÀÌÅ͸¦ ³Ö¾îÁÖ°í 
    student.printStudents(); 
  }
  
  public Student[] addStudent() {
    Student[] student = new Student [3];
    Student[0] = new Student("Lim"); 
    Student[1] = new Student("Min"); 
    Student[2] = new Student("Sook","Seoul","010XXXXXXX","ask@godofjava.com");
    return student;  
    }
    
    public void printStudents(Student[] student) {
      for (Student data:student){
        System.out.println(data); 
        }
      }
  
  }

sample.addStudent()코드는 student 객체의 데이터를 넣어준다. 

이 데이터는 printStudents에 인자로 들어가야 한다. 

printStudents 라는 메서드를 불러낼 수 있는 것은 ManageStudent의 객체인 sample 이다 

sample.printStudents(student) 로 불러주자. 

public class ManageStudent {

	public static void main(String[] args) {
		Student[] student = null;
		ManageStudent sample = new ManageStudent();
		student = sample.addStudent();
		sample.printStudents(student);
	}

	public Student[] addStudent() {
		Student[] student = new Student[3];
		student[0] = new Student("Lim");
		student[1] = new Student("Min");
		student[2] = new Student("Sook", "Seoul", "010XXXXXXXX", "ask@godofjava.com");
		return student;
	}

	public void printStudents(Student[] student) {
		for (Student data : student) {
			System.out.println(data);
		}
	}
}

출처:

- 자바의 신 8장

- https://internetot.tistory.com/entry/자바에서-발생하는-에러 [소통하고 싶은 신입 개발자이야기]

Comments