0

これが私の完全なコードです。私の課題は最後の 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);      
}    
}

どんな助けでも大歓迎です。ありがとう!

4

3 に答える 3

1

私が言える1つの問題は次のとおりです。

    int r = input.nextInt();
    //colors = findColor(r);
    Set<String> colors = a.findColor(r);     

2 行目を削除

findColor(int r)は静的メソッドではないため、静的メソッド内で直接呼び出すことはできません。インスタンス参照を使用する必要があります(上記のコードの3行目)。

于 2012-12-11T18:51:40.233 に答える
0

最後の 3 行を見てください。

int r = input.nextInt();
colors = findColor(r);
a.findColor(r);

2 行目ではfindColor、静的メソッドから呼び出そうとしていますが、静的でfindColorはありません。それは許されません。非静的メソッドは、非静的メソッドが属する特定のクラスのインスタンスを通じて呼び出す必要があります。

実際には、関数NewClassのスコープ内に のインスタンスがあり、これを呼び出しました。したがって、そのインスタンスを介して呼び出すだけです。mainafindColor

int r = input.nextInt();
colors = a.findColor(r);
于 2012-12-11T18:56:38.297 に答える
0

あなたがやろうとしていることは、コマンドラインから読み取ることです。これを行う:

http://alvinalexander.com/java/edu/pj/pj010005

最後の 3 行の 2 番目が間違っています。a を追加します。メソッド呼び出しの前に、3 行目を削除します。

于 2012-12-11T18:53:49.103 に答える