为每个循环迭代Java

为每个循环迭代Java,java,arrays,arraylist,foreach,Java,Arrays,Arraylist,Foreach,我有一个ArrayList,在其中搜索所需的元素,然后将所需的部分添加到另一个ArrayList。问题是,如果我想继续搜索单词,而不是只搜索一个单词,我不知道如何在循环中继续搜索元素。使用迭代器,我将无法搜索我需要的东西 public static ArrayList<String> FindWord(){ ArrayList<String> rewrite=new ArrayList<>();// ArrayList<String> w

我有一个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
}
publicstaticarraylistfindword(){
ArrayList rewrite=新建ArrayList()//
ArrayList word=Reading();//将数据从一个字符串重写为另一个字符串
字符串userinput=Chat();
for(字符串elmt:word){
if(elmt.contains(userinput)&&elmt.contains(“=”){
字符串[]parts=elmt.split(\\=”;
重写。添加(第[1]部分);
//在这里,我必须做一些类似word.next的事情
}
}
System.out.println(重写);
return rewrite;//返回单词的大纲
}
所以,如果我输入“hello”,它会找到“greeting”这个词,这是我文本文件中的一个概要。如果我输入“awesome”,它会找到“谢谢”这个词,但如果我同时输入这两个词,它会输入一个空数组,就像找不到任何东西而不是“问候,谢谢”

UPD: Reading()返回:

publicstaticarraylistreading(){
扫描仪输入读取器=空;
试一试{
inputreader=新扫描仪(新文件InputStream(“D:\\sinonims.txt”);
}catch(FileNotFoundException e1){//使用SINONIMS打开文件
e1.printStackTrace();
System.out.println(“未找到文件”);
系统出口(0);
}
ArrayList Sins=新的ArrayList();
while(inputreader.hasNextLine()){
字符串l=inputreader.nextLine();
Sins.add(l);//将数据从文件重写到ARRATLIST
}
inputreader.close();
系统输出打印(Sins);
归还罪恶;
}
publicstaticstringchat(){
System.out.println(“让我们开始交谈”);
扫描仪输入=新扫描仪(系统输入);
String line=in.nextLine();
回流线;

}

您应该使用特定的分隔符拆分输入字符串
userinput

然后,对于每个单词,遍历拆分的数组,并将每个单词作为
输入
,找到其与您的技术同义的词,并将其添加到
数组列表

这可以通过在代码中做一些更改来实现

public static  ArrayList<String> FindWord()
{
    ArrayList<String> rewrite=new ArrayList<>();
    ArrayList<String> word=Reading();
    String userinput=Chat();
    String inputs[]=userinput.split(","); //Considering delimiter is comma(",") in user input

    for(String input : inputs) //Giving each word as input at a time and search for it in word String
    {
        for(String elmt:word)
        {
            if (elmt.contains(input) && elmt.contains("=")) 
            {
                    String[] parts=elmt.split("\\=");
                    rewrite.add(parts[1]);
            }
        }
    }
    System.out.println(rewrite);
    return rewrite;  // RETURNS THE SYNONIM OF THE WORD
}
publicstaticarraylistfindword()
{
ArrayList rewrite=新建ArrayList();
ArrayList word=Reading();
字符串userinput=Chat();
字符串输入[]=userinput.split(,“”;//考虑到用户输入中的分隔符是逗号(,“”)
for(stringinput:inputs)//一次将每个单词作为输入,并在wordstring中搜索它
{
for(字符串elmt:word)
{
if(elmt.contains(输入)&&elmt.contains(“=”)
{
字符串[]parts=elmt.split(\\=”;
重写。添加(第[1]部分);
}
}
}
System.out.println(重写);
return rewrite;//返回单词的大纲
}
所以这里我考虑输入是用分隔符
逗号(“,”
),所以我用
逗号(“,”
)分割了输入字符串,正如您在注释中对空格作为分隔符的问题所做的描述

当您打印ArrayList时,将使用
逗号(,)
以分隔方式自动打印输出


因此对于输入:
hello,awesome
它将以
问候语的形式输出,谢谢

您应该使用一些特定的分隔符拆分输入字符串
userinput

然后,对于每个单词,遍历拆分的数组,并将每个单词作为
输入
,找到其与您的技术同义的词,并将其添加到
数组列表

这可以通过在代码中做一些更改来实现

public static  ArrayList<String> FindWord()
{
    ArrayList<String> rewrite=new ArrayList<>();
    ArrayList<String> word=Reading();
    String userinput=Chat();
    String inputs[]=userinput.split(","); //Considering delimiter is comma(",") in user input

    for(String input : inputs) //Giving each word as input at a time and search for it in word String
    {
        for(String elmt:word)
        {
            if (elmt.contains(input) && elmt.contains("=")) 
            {
                    String[] parts=elmt.split("\\=");
                    rewrite.add(parts[1]);
            }
        }
    }
    System.out.println(rewrite);
    return rewrite;  // RETURNS THE SYNONIM OF THE WORD
}
publicstaticarraylistfindword()
{
ArrayList rewrite=新建ArrayList();
ArrayList word=Reading();
字符串userinput=Chat();
字符串输入[]=userinput.split(,“”;//考虑到用户输入中的分隔符是逗号(,“”)
for(stringinput:inputs)//一次将每个单词作为输入,并在wordstring中搜索它
{
for(字符串elmt:word)
{
if(elmt.contains(输入)&&elmt.contains(“=”)
{
字符串[]parts=elmt.split(\\=”;
重写。添加(第[1]部分);
}
}
}
System.out.println(重写);
return rewrite;//返回单词的大纲
}
所以这里我考虑输入是用分隔符
逗号(“,”
),所以我用
逗号(“,”
)分割了输入字符串,正如您在注释中对空格作为分隔符的问题所做的描述

当您打印ArrayList时,将使用
逗号(,)
以分隔方式自动打印输出


因此对于输入:
hello,awesome
它将输出为
问候语,谢谢

包含获取您的精确匹配,拆分文本并相应匹配,将结果存储在新数组列表中

包含获取您的精确匹配,拆分文本并相应匹配,将结果存储在新数组列表中

如果尝试接受多个输入,则需要围绕输入循环&for循环

for循环已经在所有单词上循环

注意:我将
startsWith
contains
替换为
contains
,以防止您在equals的另一侧捕捉到该单词

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
}
static ArrayList word=Reading();
公共静态数组列表FindWord(){
ArrayList rewrite=新建ArrayList();
字符串userinput=“”;
while(true){
userinput=Chat();
如果(userinput.equals(“quit”))中断;
for(字符串elmt:word){
if(elmt.startsWith(userinput)&&elmt.contains(“=”){
字符串[]parts=elmt.split(\\=”;
重写。添加(第[1]部分);
}
}
系统输出打印LN(r