【问题标题】:Integer variable for Set cannot be resolved as typeSet 的整数变量无法解析为类型
【发布时间】:2016-10-12 17:35:03
【问题描述】:

我正在创建一个应用程序,以允许用户为 8 个赛车手分配一个车道编号。我已将跑步者姓名设置为 ArrayList 并将车道设置为 Set。目前我正在调用列表并设置为类数组。我将把 ArrayList 和 Set 组合成一个 Singleton Map。我无法让 Set 接受整数变量raceLane 作为类型。任何有关 Set 问题的帮助以及有关如何将 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 和 Set 被调用并组合为 ClassArray //灵感来自凯西

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());
    }
}

}

【问题讨论】:

  • 您的意思是Set&lt;Integer&gt; raceLanesSet = new HashSet&lt;Integer&gt;()?你也是说List&lt;String&gt; runnersArray = new ArrayList&lt;String&gt;()吗?

标签: java arraylist hashmap hashset


【解决方案1】:

集合的类型参数(set/HashSet/ArrayList...)应该是Object类型。 raceLane 不是对象类型,它只是一个 Integer 类型的变量。 你必须改变

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

要么你必须定义一个新的类“raceLane”

【讨论】:

  • 对不起,Set raceLanesSet = new HashSet()
  • Set 用于 Integer 类型,List 用于 string 类型。更正集合中的类型(删除变量)允许我创建集合,但我失去了使用 numbRunner 计数器跟踪它属于哪个跑步者的能力。我想用一套来限制重复的车道分配。
  • 我认为对于您的问题,您应该更改数据结构。你为什么不基本上拿一张HahsMap?例如,HashMap = new HahsMap(),其中的键可以表示您想分配给每个跑步者的唯一编号,而 String 可以是名称?或者,如果您需要为跑步者保留更复杂的数据,则定义 HashMap = new HashMap(),其中 Runner 拥有每个跑步者的所有数据,而键又是指定的行?您对数据结构有什么特殊要求吗?
猜你喜欢
  • 2014-12-01
  • 1970-01-01
  • 2013-06-25
  • 2016-12-19
  • 2015-10-22
  • 1970-01-01
  • 2012-04-14
  • 1970-01-01
相关资源
最近更新 更多