Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中如何将数组列表拆分为单个字母_Java_Arraylist - Fatal编程技术网

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

在Java中如何将数组列表拆分为单个字母,java,arraylist,Java,Arraylist,我正在做一项作业,希望我创建一个程序,接受一个包含单词的文本文件,遍历每个单词,然后输出最多双字母的单词。因此,如果一个文本文件有两个单词(例如过去和进行),它将输出进行。我的问题是让程序比较一个单词中的每个字母。具体地说,我似乎不知道如何将每个单词拆分成字母。这是我到目前为止所拥有的 import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Li

我正在做一项作业,希望我创建一个程序,接受一个包含单词的文本文件,遍历每个单词,然后输出最多双字母的单词。因此,如果一个文本文件有两个单词(例如过去和进行),它将输出进行。我的问题是让程序比较一个单词中的每个字母。具体地说,我似乎不知道如何将每个单词拆分成字母。这是我到目前为止所拥有的

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

}
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Scanner;
公务舱双打{
公共静态void main(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
///提示用户提供一个文件。
System.out.println(“输入文件的位置…”);
字符串位置=键盘.next();
扫描文件=空;
列表=新的ArrayList();
///如果文件位置错误,请给出一个错误。
试一试{
文件=新扫描仪(新文件(位置));
}catch(filenotfounde异常){
System.out.println(“错误:未找到文件”);
系统出口(1);
}
while(file.hasNext()){
String word=file.nextLine();
列表。添加(word);
}
///系统输出打印项次(列表);
键盘关闭();
双重查找器(列表);
}
专用静态void doublefinder(列表){
///用于分隔和比较字母的代码。
}
}

我尝试了许多不同的方法,但似乎找不到解决办法。任何帮助都将不胜感激

您可以使用.tocharray方法创建一个char数组,其中每个元素都是单词的一个字母。

示例实现如下所示:

 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;
 }
publicstaticbooleaniisdoubleword(stringstr){
char[]字母=str.toCharArray();
for(int i=0;i
上述函数接受一个字符串,如果该字符串是双字,则返回该字符串。

Arem

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

e、 g

publicstaticintnumdoubles(stringstr){
int numDoubles=0;
char[]blah=str.toCharArray()
对于(int i=0;i

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

该方法可能如下所示

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;
}
private String doubleFinder(列表){
int maxDoubleLetters=0;
int maxDoubleLettersID=0;//单词在列表中的位置
对于(int n=0;n最大双字母){
maxDoubleLetters=双字母;
maxDoubleLettersID=n;
}
}
如果(maxDoubleLetters>0)
返回列表.get(maxDoubleLetters);
其他的
返回null;
}
上面显示的方法将返回双字母数最多的单词。如果文件中不包含任何双字母单词,该方法将返回
null

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


如果您还有任何问题,请在评论部分自由提问。

到目前为止您到底尝试了什么?
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;
}