2016-04-12 16 views
0

私は、単語を含むテキストファイルを受け取り、すべての単語を通り抜けて最も多くの単語を出力するプログラムを作成したいという課題に取り組んでいます二重の文字の量。したがって、テキストファイルが2ワード(過去と過去のプログレッシブなど)を持っていた場合、プログレッシブに出力されます。私の問題は、単語の各文字を比較するプログラムを取得しています。具体的には、各単語をその文字に分割する方法を理解できないようです。ここまで私がこれまで持っていたことがあります。配列リストをJavaの個々の文字に分割する方法

import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.ArrayList; 
import java.util.List; 
import java.util.Scanner; 

public class Doubles { 

public static void main(String[] args) { 
    Scanner keyboard = new Scanner(System.in); 
    ///Prompts the user to give a file. 
    System.out.println("Enter the location of your file..."); 
    String location = keyboard.next(); 
    Scanner file = null; 
    List<String> list = new ArrayList<String>(); 
    ///If the the file location is wrong, give an error. 
    try { 
     file = new Scanner(new File(location)); 
    } catch (FileNotFoundException e) { 
     System.out.println("Error: File not found"); 
     System.exit(1); 
    } 


    while(file.hasNext()){ 
     String word = file.nextLine(); 
     list.add(word); 
    } 
    ///System.out.println(list); 
    keyboard.close(); 

    doublefinder(list); 

} 

private static void doublefinder(List<String> list) { 
     ///Code to separate and compare letters. 
    } 

} 

私はさまざまなアプローチを試みましたが、解決策が見つからないようです。どんな助けでも大歓迎です。

+2

これまでに何を試みましたか? –

答えて

0

.toCharArrayメソッドを使用すると、各要素が単語の文字である文字配列を作成できます。

次のように実装例である:文字列はダブルワードである場合

public static boolean isDoubleword(String str){ 
    char[] letters = str.toCharArray(); 
    for(int i = 0; i< letters.length-1; i++){ 
     if(letters[i] == letters[i+1])return true; 
    } 
    return false; 
} 

上記関数は、文字列とリターンを取ります。

0

AREM、

私が使用するアプローチは、文字列を取り込んで、二重の文字の数を返すメソッドを作ることです。これは、String.toCharArray()を使用して実行できます。関数。その配列を繰り返して、文字を比較して、文字列内にいくつの二重文字があるかを調べることができます。

public static int numDoubles(String str) { 
    int numDoubles = 0; 
    char[] blah = str.toCharArray() 
    for(int i = 0; i < str.length(); i++ { 
     //if the character == nextChar 
     numDoubles++; 
    } 
    return numDoubles; 
} 

文字列を比較するためにその戻り値を使用します。

0

方法は、上記の方法は、二重文字の最大数と言葉を返すよう

private String doubleFinder(List<String> list){ 
    int maxDoubleLetters = 0; 
    int maxDoubleLettersID = 0; // the position of the word in your list 
    for(int n = 0; n < list.size(); n++){ // cycle throught each word 
     String word = list.get(n); // get a word from the list 
     char[] letters = word.toCharArray(); // split the word into letters 
     int doubleLetters = 0; 
     for(int i = 1; i < letters.length; i++){ // search for all double letters 
      if(letters[i] == letters[i-1]) doubleLetters++; 
     } 
     if(doubleLetters > maxDoubleLetters){ 
      maxDoubleLetters = doubleLetters; 
      maxDoubleLettersID = n; 
     } 
    } 
    if(maxDoubleLetters > 0) 
     return list.get(maxDoubleLetters); 
    else 
     return null; 
} 

ようになります。ファイルに2文字の単語が含まれていない場合、メソッドはnullを返します。

注:これは3文字の単語では機能しません。

ご質問がある場合は、コメント欄にお気軽にお問い合わせください。

関連する問題