1

私は Java でプログラムを作成しています。このプログラムは、ランダムなオブジェクトを含む混沌としたリストを取得し、学生、教師、教授のオブジェクトを配列リストに並べ替えてから、それらの配列リストを出力します。

「エラー:シンボルが見つかりません」と表示されるどこかからarrayListsを呼び出そうとする場合を除いて、すべてが機能しています(他のクラスファイルはここに投稿しません)。スタック オーバーフローに関する他の場所で、私の問題の解決策を見つけることができませんでした。

コードは次のとおりです。

import java.util.ArrayList;
public class Main {
  public static void main(String[] argv) {
    arrayList<Object> onlyTeachers = new ArrayList<Object>();
    arrayList<Object> onlyStudents = new ArrayList<Object>();
    arrayList<Object> onlyProfessors = new ArrayList<Object>();
// Do not change below
ArrayList<Object> chaos = new ArrayList<Object>();
chaos.add(new Teacher("deWitt, Booker", "Collar Avenue 45", 2222));
chaos.add(new Student("Johnsen, John", "the Road 6", 1231231));
chaos.add(new Student("Pun, Peter", "Applestreet 4", 1234));
chaos.add(new Boolean(false));
chaos.add(null);
chaos.add(new Teacher("Wiering, John", "Puppetlane 1", 7979786));
chaos.add(new Student("Cheese, Anna", "Cheesemarket 1", 455656));
chaos.add(new Teacher("White, Snow", "Fairy tale lane 3", 7889867));
chaos.add(new Student( "Peterson, Peter", "Canalstreet 3", 8998));
chaos.add(new Professor("dr.","Manson, Derrick", "Zakuroad 124", 899844));
chaos.add(new Student("Whiskers, Hettie", "Anotherroad 3", 9123));
chaos.add(new Double(10));
chaos.add(new Student("deGroot, Lambert", "Chirplane 2", 89444498));
chaos.add(new Professor("BSc.", "Pan, Peter", "Swinkelroad 2", 892438));
chaos.add(new Student("Bali, Ali", "Aroundthecorner 662", 8923498));
chaos.add(new Integer(12));
chaos.add(new Teacher("Benson, Ben", "Somewhere 25", 8963298));
chaos.add(new Student("Youssouf, Mohammed", "There 17", 89364698));
// Do not change the above

for(Object x : chaos){
  cleanUp(x);
}    
  System.out.println("\n\n\n");
for(Object x : onlyProfessors){
  System.out.println(x);
  System.out.println("\n");
}
  System.out.println("\n\n\n");
for(Object x : onlyStudents){
  System.out.println(x);
  System.out.println("\n");
}
  System.out.println("\n\n\n");
for(Object x : onlyTeachers){
  System.out.println(x);
  System.out.println("\n");
}

}
public static void cleanUp(Object object){  
  if(object instanceof Person){

    if(object instanceof Professor){  
       System.out.println("\nThis is a professor.");
       onlyProfessors.add(object);
      } else {
      if(object instanceof Student){
        System.out.println("\nThis is a student.");
        onlyStudents.add(object);
      } else {
        if(object instanceof Teacher){
          System.out.println("\nThis is a Teacher.");
          onlyTeachers.add(object);
        }
      }
    }
  } else {
    System.out.println("\nThis is not a person.");
  }

System.out.println(object);
}

}  

該当する場合、フォーマットが不適切で申し訳ありません。

4

1 に答える 1

0

コードには 2 つの問題があるようです。最初に、arrayList の代わりに ArrayList を使用する必要があります。また、メソッドでローカルに定義されている場合、別のメソッドで Arraylists にアクセスしようとしているようです。メソッド内で変数が定義されている場合、他のメソッドで変数にアクセスすることはできません。そのため、配列リストをメイン関数内ではなく、クラス変数としてグローバルに定義する必要がある場合があります。必要なコード変更は次のとおりです。

パブリック クラス メイン {

    static ArrayList<Object> onlyTeachers = new ArrayList<Object>();
    static ArrayList<Object> onlyStudents = new ArrayList<Object>();
    static ArrayList<Object> onlyProfessors = new ArrayList<Object>();

  public static void main(String[] argv) {

// remove the list from here
//    arrayList<Object> onlyTeachers = new ArrayList<Object>();
//    arrayList<Object> onlyStudents = new ArrayList<Object>();
//    arrayList<Object> onlyProfessors = new ArrayList<Object>();
于 2013-05-11T10:16:07.073 に答える