2017-11-02 19 views
-2

内部の別のクラスからのArrayListを記入 同じパッケージ

は、私はスイッチ/ケースでメインクラスを持っている..私は、javaを学んだし、私はちょうど私があなたを説明するつもりだ何をやろうとして一週間を過ごしました他のクラスを呼び出します。また 、次のコードでCar.javaを持っている:

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" のようないくつかのクラス:

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 =新しい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 
     // ... 
    } 

私はそれを望みますが手伝う。良い学習:)

関連する問題