0

Javaでスケジューラを作成しています。すべてを 1 つのクラスにまとめましたが、別のクラスに分割したいと考えています。これは非常に小さなプログラムなので、メリットはほとんどありませんが、その概念を正しく理解したいと考えています。コードは以下です。

importTeams() メソッドの 2 番目のクラスでエラーが発生します。このメソッドが入っているパッケージをインポートすれば大丈夫だと思いました。明らかにそうではありません。任意のヒント?

package fifa.scheduler.fileimport;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
import fifa.scheduler.output.*;

public class FileRead2 {

    private String rrTeam;

     public List<String> importTeams() {    
            ArrayList<String> teamList = new ArrayList<String>(); 
            BufferedReader br = null; 
            int linecount = 0;  
            String teamcounter;
            try {
                br = new BufferedReader(new FileReader("path")); 
                while (br.readLine() != null){
                    linecount ++;
                }
                br.close();
                br = new BufferedReader(new FileReader("path"));
                setRrTeam(br.readLine());
                while ((teamcounter = br.readLine()) != null) {
                    teamList.add(teamcounter);
                    }
                if (linecount % 2 != 0) {
                    teamList.add("byeteam");
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            }           
            return teamList;
     }
        public static void main(String args[]){
            FileRead2 fr = new FileRead2();
            fr.PrintTeams();    
        }
        private void setRrTeam(String rrTeam) {
            this.rrTeam = rrTeam;
        }
        private String getRrTeam() {
            return rrTeam;
        }
}



package fifa.scheduler.output;

import java.util.Collections;
import java.util.List;
import fifa.scheduler.fileimport.FileRead2;

public class SchedulerOutput {
    public void PrintTeams(){

    List<String> teamList = importTeams();
     int tl = teamList.size();
     int bh = 0;
     int uh = (tl - 2);
     for (int i = 0; i <=(teamList.size()-1); i++) {     
     System.out.println("Week " + (i+1) + " fixtures");
     System.out.println(getRrTeam() + " vs " + teamList.get(tl -1));
     while ((bh <= (tl / 2)) && (uh >= ((tl / 2)))) {
         System.out.println(teamList.get(bh) + " vs " + teamList.get(uh));
         bh++;
         uh--;
     }
     Collections.rotate(teamList, 1);
     tl = teamList.size();
     bh = 0;
     uh = (tl - 2);
     }
}
}
4

1 に答える 1

2

importステートメントを使用してクラスをインポートすると、クラスのインターフェイスのみがインポートされます。メンバー メソッドを呼び出すには、クラスのインスタンスが必要です。

あなたの場合、メソッドFileRead2を呼び出すタイプのオブジェクトを作成する必要がありますimportTeams()

// Since FileRead2 has some member variable, you should also think about
// initializing it appropriately if it is needed by importTeams method.
FileRead2 fileRead2Obj = new FileRead2();
fileRead2Obj.importTeams();

同様に、静的メソッドを呼び出すには、メソッド名をクラス名で修飾する必要があります (ただし、Java 5+ ではメソッドの静的インポートも許可されています)。

静的メソッドの場合importTeams()、クラスをインポートした後、次のように呼び出す必要があります。

FileRead2.importTeams();
于 2013-07-10T23:36:41.617 に答える