java - Java for-each 循环中的迭代

标签 java arrays arraylist foreach

我有一个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/

相关文章:

java - Java 中的 SSL 身份验证作为服务器/客户端模型

java - 如何只加载一次属性文件?

java - 添加整数数组作为类的变量

java - 复制数组或强制 ArrayList 指定初始大小。什么更有效?

android - 如何将选项添加到 Android 中现有微调器的顶部

带有 Hashmap 问题的 Java(基本)多线程

java - 将泛型类添加到采用泛型类型的列表

php - Foreach 分解字符串停止

php - 如何从 XML 标签中取出元素存储到 PHP 数组中?

java - 如何使算法在Java中更有效地查找集合中的重复对象?