如何在Java中将数组列表分成单个字母

时间:2016-04-12 16:40:07

标签: java arraylist

我正在进行一项任务,要求我创建一个程序,接受包含单词的文本文件,遍历每个单词,然后输出最多双字母的单词。因此,如果文本文件有2个单词(例如过去和渐进),则会输出渐进式。我的问题是让程序比较一个单词中的每个字母。具体来说,我似乎无法弄清楚如何将每个单词分成字母。这是我到目前为止所拥有的。

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.
    }

}

我尝试了很多不同的方法,但似乎无法找到解决方案。任何帮助将非常感激。

3 个答案:

答案 0 :(得分:0)

您可以使用.toCharArray方法创建一个char数组,其中每个元素都是单词的字母。 http://crunchify.com/java-simple-way-to-convert-string-to-char-array/

示例实现如下:

 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;
 }

上面的函数接受一个字符串,如果字符串是双字,则返回。

答案 1 :(得分:0)

AREM,

我将使用的方法是创建一个接受字符串并返回双字母数的方法。这可以使用String.toCharArray();功能。然后,您可以遍历该数组以比较字母,以查看字符串中有多少双字母。

e.g。

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;
}

使用该返回值来比较您的字符串。

答案 2 :(得分: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;
}

上面显示的方法将返回双字母数最多的单词。如果文件中不包含任何带双字母的单词,则该方法将返回null

注意:这不适用于包含三字母的单词。

如果您还有其他问题可以在评论部分免费提问。