2016-06-12 8 views
0

私は、8人のレーサーのためにユーザーにレーン番号を割り当てることを許可するアプリケーションを作成しています。ランナーの名前をArrayListに設定し、レーンをSetに設定しました。現時点で私はリストを呼び出してクラス配列に設定しています。私は、ArrayListとSetをSingleton Mapとして組み合わせます。 SetからInteger変数raceLaneをTypeとして受け入れることができません。セット問題とArrayListとSetをSingleton Mapにする方法についての助言はありがたいです。ここまで私がこれまで持っていたことがあります。である必要がありますセット用の整数変数はタイプとして解決できません

package Race; 


import java.util.ArrayList; 
import java.util.HashSet; 
import java.util.Scanner; 
import java.util.Set; 


public class LaneDesignation { 



//create ArrayList and Set 
private ArrayList runnersArray= new ArrayList(); 
private Set<raceLane> raceLanesSet = new HashSet<raceLane>(); 
//Declare Variables 
private Integer raceLane; 
String runnerName; 
int numbRunner, i = 0; 
//Call Scanner Instance 
Scanner input = new Scanner(System.in); 

public LaneDesignation() 
{ 
    this.raceLane = raceLane; 
} 

public void setNumb(int numb) 
{ 
    numbRunner= numb; 
} 

public void setName() 
{ 
    System.out.print("Please enter the name of runner " + numbRunner + ": "); 
    runnerName = input.next(); 
    i = 0; 
    runnersArray.add(i, runnerName); 
    i++;  
} 

public String returnName() 
{ 
    return runnerName; 
} 


public void getLane() 
{ 
    raceLanesSet.add(0, raceLane); 

    do 
    { 

     System.out.print("Please enter the lane the runner is assigned to "); 
     while (input.hasNextInt()) 
     { 
      //Test that only numeric characters were entered 
      System.out.println("Invalid entry. Please enter a numeric value"); 
      System.out.print("Please enter a lane designation from 1-8: "); 
      input.next(); 
     } 

     raceLane = input.nextInt(); 

    }while (raceLane <=0); 
    raceLanesSet.add(i, raceLane); 

    i++; 
} 

public Integer returnLane() 
{ 
return raceLane; 
} 

public void displayDesignation() 
{   
    System.out.println("Runner | Desinated Lane"); 
    while (i < runnersArray.size()) 
    { 
     System.out.println(runnersArray.(i) + " will race in lane" + raceLanesSet.get(i)); 
     i++; 
    } 
} 

public void setRaceLane(Integer raceLane) 
{ 
    this.raceLane = raceLane; 
} 

} 

のArrayListとセットと呼ばれ、作品Kacey

package Race; 

import java.util.Scanner; 
public class Runners { 


    //creation array of classes of class LaneDesignation 
    LaneDesignation[] Assign = new LaneDesignation[8];//8 Runners and 8 lanes 
    Scanner input = new Scanner(System.in); 


    public Runners() 
    { 
     //initialization of the class 
     for (int i=0; i<Assign.length; i++){ 
     Assign[i] = new LaneDesignation(); 
    } 
} 

public void raceArray() 
{ 
    for(int i=0;i<Assign.length; i++) 
    {  
     Assign[i].setNumb((i+1));   

     Assign[i].setName(); 

     Assign[i].getLane(); 

    } 
} 
//Method to display the contents in the list 
//I am receiving runnersArray cannot be resolved to variable error 
public void outputRunners() 
{ 
    for(LaneDesignation currentRunner : runnersArray) 
    { 
     System.out.println(currentRunner.getRunner()); 
    } 
} 

} 
+0

あなたは '設定し raceLanesSet =新しいHashSetの()'もしかして新しいクラス "raceLane" を定義する必要がありますか? 'List runnersArray = new ArrayList ()'も意味しましたか? – Andreas

答えて

0

コレクション(セット/ HashSetの/ ArrayListの...)の型パラメータに触発ClassArray //として組み合わせオブジェクトタイプ。 raceLaneはオブジェクト型ではなく、単にInteger型の変数です。 あなたは

Set<Integer> raceLanesSet = new HashSet<Integer>() 

を変更する必要がどちらかあなたは

+0

セット raceLanesSet =新しいHashSet () –

+0

セットは整数型であり、リストは文字列型の文字列型です。セット内のタイプ(変数を削除)を修正すると、セットを作成することができましたが、numbRunnerカウンターでどのランナーが属しているかを追跡する能力が失われました。私はセットを使用して重複レーンの割り当てを制限したい。 – Cherokee215

+0

あなたの問題については、データ構造を変更する必要があると思います。基本的にハズマップを取ってみませんか?たとえば、HashMap =新しいHahsMap()の場合、キーはすべてのランナーに渡す固有の番号を表すことができ、Stringは名前になりますか?またはランナーのためにもっと複雑なデータが必要な場合、HashMap = new HashMap()を定義します。ランナーは各ランナーに関するすべてのデータを持ち、キーは割り当てられたラインですか?データ構造に関する具体的な要件はありますか? –

関連する問題