X3h7ppm5jizsrp1epbhr
jmLee
  • 2016.5.1 11:13
  • 조회수 148
  • 답변수 1
X3h7ppm5jizsrp1epbhr
jmLee
  • 2016.5.1 11:13
  • 조회수 148
  • 답변수 1

오류 문의

실행은 되는데 제출시

Command failed: /Code.java:8: error: constructor Bus in class Bus cannot be applied to given types;
Bus bus = new Bus();
^
required: String
found: no arguments
reason: actual and formal argument lists differ in length
1 error

라는 에러가 발생합니다.
* 라는 값을 넣었는데 왜 에러가 나는 것인지 알고 싶습니다.

RunnableExam.java
public class RunnableExam{
  public static void main(String [] argv){
    Bus bus = new Bus("*");
    /*
    Runnable을 구현한 클래스를 이용해 쓰레드를 이용할때는
    아래와 같이 Thread의 생성자에 해당 객체(bus)를 전달하면 됩니다.
    하지만 이대로 실행하면 에러가 발생합니다.
    bus가 runnable을 implements하고 있지 않기 때문입니다.
    */
    Car car = new Car();
    car.drive();
    Thread busThread = new Thread(bus);
    busThread.start();
  }
}
Bus.java
public class Bus extends Car implements Runnable{
    String str;
    public Bus(String str){
      this.str = str;
    }
    public void run() {
        for(int i = 0; i < 10;i++){
            System.out.println(str);

            try {
                Thread.sleep((int)(Math.random()*1000));
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}
Car.java
public class Car{
  public String name;
  public int number;

  public void drive(){
    System.out.println("차가 달립니다.");
  }
}
  • #자바 중급
  • #쓰레드 만들기(implements Runnable) - 실습

1 답변

  • Gscxhpxkg5i74t30rimh
    정두식
    • 2016.5.1 16:37

    Bus bus = new Bus();이 부분은 작성하신 코드에 있는 내용이 아니라 코드의 동작을 체크하는 부분에 있는 코드입니다.

    Bus의 인스턴스를 생성해서 그 인스턴스가 Runnable을 구현하고 있는지 확인하는 과정에서 저런 코드가 들어갑니다.

    Bus의 생성자를 수정하지 말고 제출해보세요.

답변 쓰기

이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.