我有一个ArrayList,我在其中搜索所需的元素,然后将其所需的部分添加到另一个ArrayList。问题是,如果我想继续搜索单词,而不仅仅是一个单词,我不知道如何通过循环继续搜索元素。使用迭代器,我将无法搜索我需要的东西。
public static ArrayList<String> FindWord(){
ArrayList<String> rewrite=new ArrayList<>();//
ArrayList<String> word=Reading();// rewrites the data from one string to other
String userinput=Chat();
for(String elmt:word){
if (elmt.contains(userinput) && elmt.contains("=")) {
String[] parts=elmt.split("\\=");
rewrite.add(parts[1]);
// here I must do something like word.next
}
}
System.out.println(rewrite);
return rewrite; // RETURNS THE SYNONIM OF THE WORD
}
所以,如果我输入“hello”,它会找到“greeting”这个词,这是我的文本文件中的同义词。如果我输入“awesome”,它会找到“thanks”这个词,但是如果我同时输入它们,它会输入一个空数组,就像什么也没找到一样,而不是“greeting,thanks”
更新: Reading() 返回:
public static ArrayList<String> Reading() {
Scanner inputreader = null;
try {
inputreader = new Scanner(new FileInputStream("D:\\sinonims.txt"));
}catch (FileNotFoundException e1) { // OPENS FILE WITH SINONIMS
e1.printStackTrace();
System.out.println("File not found");
System.exit(0);
}
ArrayList<String> Sins=new ArrayList();
while(inputreader.hasNextLine()){
String l=inputreader.nextLine();
Sins.add(l); // REWRITES DATA FROM FILE TO ARRATLIST
}
inputreader.close();
System.out.print(Sins);
return Sins;
}
公共(public)静态字符串聊天(){
System.out.println("我们开始说话吧。");
扫描仪输入=新扫描仪(System.in);
字符串行=in.nextLine();
返回线;
}
最佳答案
如果您尝试接受许多输入,则需要循环输入和 for 循环。
for 循环已经遍历了所有单词。
注意:我将 contains
替换为 startsWith
,以防止您捕获等号另一侧的单词
static ArrayList<String> word=Reading();
public static ArrayList<String> FindWord(){
ArrayList<String> rewrite=new ArrayList<>();
String userinput = "" ;
while (true) {
userinput=Chat();
if (userinput.equals("quit")) break;
for(String elmt:word){
if (elmt.startsWith(userinput) && elmt.contains("=")) {
String[] parts=elmt.split("\\=");
rewrite.add(parts[1]);
}
}
System.out.println(rewrite);
return rewrite; // RETURNS THE SYNONIM OF THE WORD
}
我真的不能说这是解决你的问题的最佳方法,因为你似乎需要一个 Hashmap,而不是 Arraylist
关于java - Java for-each 循环中的迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40466960/