我正在进行一项任务,要求我创建一个程序,接受包含单词的文本文件,遍历每个单词,然后输出最多双字母的单词。因此,如果文本文件有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.
}
}
我尝试了很多不同的方法,但似乎无法找到解决方案。任何帮助将非常感激。
答案 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
。
注意:这不适用于包含三字母的单词。
如果您还有其他问题可以在评论部分免费提问。