这是我的完整代码。我的挑战是最后3行!我不能将参数(int r)发送到findColor(int r)。任何帮助都非常感谢。感谢
import java.util.*;
public class NewClass {
private HashMap <Character,HashSet> colorMap ;
public NewClass() {
colorMap = new HashMap<Character, HashSet>();
}
public void addColor(){
HashSet a1 = new HashSet();
a1.add("Yellow");
a1.add("Blue");
a1.add("Pink");
colorMap.put('X', a1);
HashSet a2 = new HashSet();
a2.add("White");
a2.add("Brown");
a2.add("Blue");
a2.add("Black");
colorMap.put('W', a2);
}
public Set<String> findColor(int r)
{
Set<String> colors = new HashSet<String>();
{
for(Character m : colorMap.keySet())
if(r < colorMap.size())
{
Set<String> zone = colorMap.get(m);
System.out.println("Zone " + zone + " has more than " + r + " colors");
}
}
return colors;
}
public static void main(String [] args){
Set<String> colors;
NewClass a = new NewClass();
Scanner input = new Scanner(System.in);
System.out.print("Enter a numbers \n");
int r = input.nextInt();
colors = findColor(r);
a.findColor(r);
}
}
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
我能说的一个问题是:
int r = input.nextInt();
//colors = findColor(r);
Set<String> colors = a.findColor(r);
删除第二行
findColor(int r
)不是静态方法,所以你不能直接调用静态方法,你需要使用实例引用(上面代码中的line3)。
答案 1 :(得分:0)
答案 2 :(得分:0)
查看最后3行:
int r = input.nextInt();
colors = findColor(r);
a.findColor(r);
在第2行,您尝试从静态方法调用findColor
,但findColor
不是静态的。这是不允许的;必须通过非静态方法所属的特定类的实例调用非静态方法。
您的NewClass
函数范围内实际上有一个main
的实例,您调用的是a
。因此,只需通过该实例调用findColor
:
int r = input.nextInt();
colors = a.findColor(r);