2017-11-02 12 views
-2

안에 다른 클래스에서 ArrayList를 채우기 같은 패키지

내가 스위치/케이스 메인 클래스가 .. 내가 자바를 배우고 난 그냥 내가 당신을 설명 할게 무엇을하려고 일주일 동안 다른 클래스를 호출합니다.

public class Car { 
    private int id; 
    private String name; 
    private int serie; 
    private double price; 

    Car() { 
    } 

    public Car(int id, String name, int serie, double price) { 
     this.id = id; 
     this.name = name; 
     this.serie = serie; 
     this.price= price; 
    } 
} 

그리고 "setName.java"와 "setSerieAndPrice"와 같은 일부 클래스 : 또한 다음 코드로 Car.java이 ..

public class setIdAndName { 

    public static void sName(){ 
     //Car c = new Car();?? 

     System.out.println("Insert an ID: "); 
     Scanner read = new Scanner(System.in); 
     int readId=read.nextInt(); 
     int idOk=readId; 


     System.out.println("Write a name: "); 
     Scanner read2 = new Scanner(System.in); 
     String readName=read2.next(); 
     String nameOk=readName; 

     //HERE IF WHERE I HAVE THE PROBLEM - HOW CAN I SET THE ID AND THE NAME TO THE ARRAYLIST CAR 
     c.setId(idOk); 
     c.setName(nameOk); 
     System.out.println("ID set: "); 
     System.out.println(c.getId()); 
    } 
} 

그래서 내 질문은 : - 어디 내 ArrayListt = new ArrayList를 선언해야합니까 <>(); ? 주 또는 Car.java에서? - ArrayList를 선언 한 후 setIdAndName.java 클래스에서 어떻게 액세스 할 수 있습니까?

당신이 나를 도울 수 있기를 바랍니다. 미리 감사드립니다.

+1

'setIdAndName'은 오히려 클래스 이름보다 메소드 이름이된다는 점에 유의하십시오. – Berger

+1

[Java 명명 규칙] (http://www.oracle.com/technetwork/java/codeconventions-135099.html) – CodeMatrix

답변

0

당신이 전화하는 방법.

1) 메인 클래스의 정적을 정의하고 직접 호출 할 수 있습니다

Main.arraylist.add(obj) 

2) 매개 변수로 ArrayList에 동의하고 항목을 추가 할 수있는 모든 클래스의 메소드를 정의 할 수 있도록 참조에 의해 전달되는 객체 그 방법 안에서 그 안에.

참조로 통과 한 이후 동일한 개체에서 변경됩니다.

0

질문 1 : 어디에서나 목록을 신고 할 수 있습니다 :) 사용 방법에 따라 다릅니다. 당신은 당신의 경험으로부터 그것을 배울 것입니다.

질문 2 : 여러 가지 방법으로 액세스 할 수 있습니다. 또한 나중에 사용하는 목록에 따라 다릅니다. 몇 가지 간단한 사용법 :

  1. 자동차 정보를 검사하는 방법에 목록을 전달하십시오. 이 같은 것을 :

    public static void sName(ArrayList <Car> theList){ 
        // input car info to Car c; 
        theList.add(c); 
    } 
    
  2. 목록에 직접 액세스 할 수 있습니다. 이렇게 : Main.theList.add (...); theList는 Main 클래스 (Main.java 파일)에서 선언되어야합니다.

    public static void sName(){ 
        // input car info to Car c; 
        Main.theList.add(c); // this list should be declared: static public ArrayList <Car> theList=new ArrayList<>(); 
    } 
    

그리고 나는이처럼 setIdAndName 클래스를 변경 당신에게 당신의 "작업":

또 다른 솔루션을 보여주고 싶은 :

public class setIdAndName { 
     public static Car sName(){ 
      Car c = new Car(); 

      ... 

      c.setId(idOk); 
      c.setName(nameOk); 
      return c; 
     } 
    } 

을 그리고 좋아하는 기본 기능을 변경 이 :

public static void main(String[] args) { 
     ArrayList <Car> theList = new ArrayList <>(); 
     theList.add(setIdAndName.sName()); // 1st car 
     theList.add(setIdAndName.sName()); // 2nd car 
     // ... 
    } 

나는 희망한다. 너를 도울 것이다. 좋은 학습 :)