자바 이클립스 에러 질문드려요
자꾸 이런 에러가 뜨면서 실행이 되지 않습니다.
환경설정 환경변수는 모두 제대로 설정했습니다.
뭐가 문제고 어떻게 해야할까요.. 시험기간인데 큰일이에요
아래는 코드 전문입니다.
안녕하세요..
코딩하시다가 괄호 '}' 가 빠지신것 같네요..
수정소스 올려드립니다.
package lab6;
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;
class Staff extends Person{
private int staffID;
private String dept;
private Date dateHired;
public static ArrayList<Staff> staffs = new ArrayList<>();
Staff(String n, String p, String d){
super(n, p);
dept = d;
}
void printInfo() {
super.printInfo();
System.out.println("staff id : " + staffID);
System.out.println("DATE Hired : " + dateHired);
System.out.println("dept : " + dept);
}
}
class Customer extends Person {
// Atrributes
private int customerID;
private String driverLicense;
public static ArrayList<Customer> customers = new ArrayList<>();
// Operations
Customer(String n, String p, String license) {
super(n , p);
driverLicense = license;
}
@Override
public void printInfo() {
super.printInfo();
System.out.println("customer ID : " + customerID);
System.out.println("driverLicense : " + driverLicense);
}
}
class Person {
Scanner sc = new Scanner(System.in);
// Attributes
private int personID;
private String name;
private String phone;
private static ArrayList<Person> persons = new ArrayList<>();
// Operations
Person(String n, String p) { // Constructor n : name, p : phone
this.name = n;
this.phone = p;
}
void printInfo() { //
System.out.println("person ID : " + personID);
System.out.println("name : " + name);
System.out.println("phone number : " + phone);
}
protected static void addPerson(Person p) {
persons.add(p); // add the instance of Person that received as parameter
}
protected static Boolean deletePerson(Person p) {
if (persons.isEmpty())
return false;
else {
persons.remove(p);
return true;
}
}
public void printAllPersons() {
if (persons.isEmpty())
System.out.println("ArrayList<Person> persons are empty now");
else {
for (int i = 0; i < persons.size(); i++) // print all the elements in ArrayList<Person> persons. Using
// printInfo in ArrayList element
persons.get(i).printInfo();
}
}
}
public class lab6 {
public static void main(String[] args) {
Customer customer1 = new Customer("heewon", "010-2323-9121", "da-2501");
Customer customer2 = new Customer("jiwon", "010-1111-1111", "da-2502");
Customer customer3 = new Customer("jisu", "010-4563-1243", "da-2503");
Customer.customers.add(customer1); Customer.customers.add(customer2);
Customer.customers.add(customer3);
Staff staff1 = new Staff("heesu", "010-2828-2828", "100000 won");
Staff staff2 = new Staff("jisun", "010-2213-2512", "1200000 won");
Staff staff3 = new Staff("mimin", "010-2828-1232", "400000 won");
Staff.staffs.add(staff1);
Staff.staffs.add(staff2);
Staff.staffs.add(staff3);
}
}
정말 열심히 잘하셨는데 main이 에러 네요.ㅎ
자바는 { } 로 메소드와 블럭을 묶기 때문에 { } 열고 닫고 를 잘해 줘야 합니다.
그래서 줄을 잘 맞추기도 해야 하죠
main 메소드의 위쪽 클래스의 마지막 메소드를 보면 닫는 } 가 빠졌어요
public void printAllPersons() {
if (persons.isEmpty())
System.out.println("ArrayList<Person> persons are empty now");
else {
for (int i = 0; i < persons.size(); i++) // print all the elements in ArrayList<Person> persons. Using
// printInfo in ArrayList element
persons.get(i).printInfo();
} //if ~ else 닫기
} //printAllPerson 메소드 닫기
} //Person 클래스 닫기
안녕하세요
오류메세지를 보니 static을 제거하라는것처럼 보이는데요.
main 메소드의 static으로 선언되어있는것을 한번 지워서
다시 빌드 진행 해보시면 될것같습니다.
참고로 오류메세지의 아라 파란줄로있는게 오류를 줄이기위한 가이드라고 볼수있으니, 추후 오류가발생하면 해당오류를 보며 수정하시면 도움되실것같습니다.
안녕하세요.
소스 상으로만 봤을 때에는 "public class lab6" 라고 선언이 "class Person" 안쪽에 있는거 같은데, 맞는지요?
만약 Person 안에 있다면, lab6 클래스 안에서는 method 에 static을 붙일 수 없습니다.
1. "public static class lab6"로 변경하거나,
2. main method의 static을 제거하거나,
3. static main method를 Person class 괄호 안쪽에 넣거나 등등 방법이 있습니다.