0

私はTreesetエッジをソートするために使用しています。コードは次のとおりです。

TreeSet<Edge> edges = new TreeSet<Edge>();

//Sample problem - replace these values with your problem set
edges.add(new Edge("0", "1", 2));
edges.add(new Edge("0", "3", 1));
edges.add(new Edge("1", "2", 3));
edges.add(new Edge("2", "3", 5));
edges.add(new Edge("2", "4", 7));
edges.add(new Edge("3", "4", 6));
edges.add(new Edge("4", "5", 4));

System.out.println("Graph");
KruskalEdges vv = new KruskalEdges();

for (Edge edge : edges) {
    System.out.println(edge);
    vv.insertEdge(edge);
}

静的に与えるのではなく、ユーザーからの入力を取りたいだけですedges.add

4

4 に答える 4

3

Edgeコンストラクターが 2 つのString引数と 1つの引数を取る場合は、 Scannerを使用してint単純に 2Stringつと 1 つを読み取り、それらを変数に格納してからコンストラクターに渡します。intEdge

于 2012-10-16T08:48:50.523 に答える
0

スキャナーのドキュメントを見て、簡単な方法で入力を取得する方法を理解してください。

于 2012-10-16T08:50:15.143 に答える
0

スキャナーを使用して、実行時に入力を取得できます

//From command line
Scanner in = new Scanner(System.in);


//From file
Scanner sc = new Scanner(new File("edges"));
while (sc.hasNextLong()) {...}


次に、これらの値で Edge オブジェクトをインスタンス化し、それを TreeSet で使用する必要があります

于 2012-10-16T08:57:06.987 に答える
0

ループを使用して、各Edgeインスタンスの 3 つのパラメーターを要求します (これはScannerクラスを介して行うことができます)。次に、これらのパラメーターを処理して (Stringクラス関数などを使用することを意味します)、インスタンスを構築します。最後に、各インスタンスを同じループ内のエッジ セットに追加します。サンプルコード:

TreeSet<Edge> edges = new TreeSet<Edge>();

Scanner scanner = new Scanner(System.in);
int counter = 10;

while (counter > 0)
{
    System.out.println("Enter edge parameters:");
    String temp = scanner.nextLine();
    String[] params = temp.split("-");
    edges.add(new Edge(params[0], params[1], Integer.valueOf(params[2])));
    counter--;
}

: 上記のループは 10 回実行されます。これはデモ用です。自分でループを操作できます。ユーザーは、パラメーターの区切りとしてダッシュ (-)を入力する必要があります。有効なユーザー入力は次のようになります: 24-5-6また、エラー処理にも注意してください。ユーザー入力の不一致は、このコードでは処理されません。

于 2012-10-16T09:58:43.780 に答える