我正试图编写一个程序,从池中随机选取3个国家,然后将它们输出为字符串。这些国家将依次获得金,银和铜牌。 olympicResults方法会将每个字符串添加到数组中。最后,所有国家将按照获得的金牌,银牌和铜牌数量进行排序。无法访问ArrayList对象方法
我遇到了eventResult方法的问题 - 我似乎无法从我的国家类访问方法,比如getName() - 只是给我找不到符号错误。当我在eventResult方法中初始化ArrayList时,它似乎工作,但是这不起作用,因为每次调用该方法时都会初始化新的ArrayList。
另一个问题是防止重复出现在eventResult字符串中的国家 - 我做错了什么想法?
代码:
public class OlympicMedals
{
public static void main (String[] args)
{
String[] countries = {"CAN", "BRB", "BLR", "HKG", "CHN", "SWE"}
ArrayList<Country> list = new ArrayList<Country>();
for (int j=0; j<9; j++) //initialize countries
{
list.add(new Country());
list.get(j).setName(countries[j]);
}
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
Print(n, list);
}
public static String eventResult (ArrayList list) //generates result of discipline
{
String res = "";
Random rand = new Random();
ArrayList<Country> listCopy = new ArrayList<Country>(list);
for (int i=0; i<3; i++) //generate list, prevent repeats
{
int n = listCopy.size();
int random = rand.nextInt(n);
res += list.get(random).getName() + " ";
if (i==0)
list.get(random).setGold(1);
if (i==1)
list.get(random).setSilver(1);
if (i==2)
list.get(random).setBronze(1);
listCopy.remove(random);
}
return res;
}
public static String[] olympicResults(int n, ArrayList list) //array of strings from eventResult
{
String[] result;
result = new String[n];
for (int i=0; i<n; i++)
{
result[i] = eventResult(list);
}
return result;
}
public static void Print(int n, ArrayList list)
{
for (int i=0; i<n; i++) //print results
{
System.out.println(olympicResults(n, list)[i]);
}
}
国家类:
public class Country
{
private int gold;
private int silver;
private int bronze;
private String name;
public Country() //default constructor
{
setName("");
setGold(0);
setSilver(0);
setBronze(0);
}
public void setName(String n)
{
name = n;
}
public String getName()
{
return name;
}
public void setGold(int g)
{
gold += g;
}
public int getGold()
{
return gold;
}
public void setSilver(int s)
{
silver += s;
}
public int getSilver()
{
return silver;
}
public void setBronze(int b)
{
bronze += b;
}
public int getBronze()
{
return bronze;
}
}
你应该在任何地方使用泛型,像'eventResult(ArrayList的列表)'应该是'eventResult(ArrayList的列表)' –
Apurv
2013-04-05 03:54:45
清理你的代码第一。它有很多的错误。 '语法'和'逻辑'。 – SudoRahul 2013-04-05 03:55:21
@Apurv哦,哇。修复它,谢谢!任何建议重复预防? – Hanyuu 2013-04-05 03:58:03