-1

私は以下の質問に取り組んでおり、非常に近いですが、19行目と32行目で次のエラーが発生し、理解できません。

foreachは(String place:s)の式タイプには適用されません

質問:

税務調査官は、それぞれunemployed.txtとtaxpayers.txtという2つのテキストファイルを利用できます。各ファイルには、1行に1つの名前のコレクションが含まれています。検査官は、両方のファイルで発生した人を危険なキャラクターと見なします。危険なキャラクターの名前を印刷するプログラムを作成します。セットに対するJavaのサポートをうまく活用してください。

私のコード:

class Dodgy {

public static void main(String[] args) {

    HashSet<String> hs = new HashSet<String>();

    Scanner sc1 = null;
try {sc1 = new Scanner(new File("taxpayers.txt"));} 
        catch(FileNotFoundException e){};
while (sc1.hasNextLine()) {
    String line = sc1.nextLine();
    String s = line;
    for (String place: s) {
        if((hs.contains(place))==true){
            System.out.println(place + " is a dodgy character.");
    hs.add(place);}
    }   
}

    Scanner sc2 = null;
try {sc2 = new Scanner(new File("unemployed.txt"));} 
        catch(FileNotFoundException e){};
while (sc2.hasNextLine()) {
    String line = sc2.nextLine();
    String s = line;
    for (String place: s) {
        if((hs.contains(place))==true){
            System.out.println(place + " is a dodgy character.");
    hs.add(place);}
}
}
}
}
4

2 に答える 2

1

「文字列内の各文字列」を反復処理しようとしていますが、それはどういう意味ですか?

各ファイルの各行を反復処理するだけでよいように感じます...行内を反復処理する必要はありません。

次に、最初のループでは、最初のファイルのみを表示しているので、危険な文字をどのように検出できるでしょうか。

問題を次のように抽象化することを検討します。

  • ファイルを読み取り、ハッシュセットを設定するメソッドを記述します。
  • そのメソッドを2回呼び出して2つのセットを作成し、交差点を見つけます。
于 2012-08-21T16:55:27.060 に答える
0

Foreachはタイプにのみ適用されjava.lang.Iterableます。文字列はそうではないので、エラーもそうです。

文字列内の文字を繰り返すことを意図している場合は、その「s」を「s.toCharArray()」に置き換えて、。である配列を返しますjava.lang.Iterable

于 2012-08-21T16:52:46.247 に答える