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