Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在读取ArrayList以了解打印条件的同时打印该ArrayList_Java_Loops_Printing_Arraylist_Anagram - Fatal编程技术网

Java 在读取ArrayList以了解打印条件的同时打印该ArrayList

Java 在读取ArrayList以了解打印条件的同时打印该ArrayList,java,loops,printing,arraylist,anagram,Java,Loops,Printing,Arraylist,Anagram,我有两个ArrayLists。一个包含标点符号和大写的单词,另一个删除了这些单词 清单1: File word: it's File word: Sit File word: yes-man File word: murdered File word: ok File word: DereDrum File word: Hello File word: Friend 清单2: Edited word: its Edited word: sit Edited word: yesman Edite

我有两个
ArrayList
s。一个包含标点符号和大写的单词,另一个删除了这些单词

清单1:

File word: it's
File word: Sit
File word: yes-man
File word: murdered
File word: ok
File word: DereDrum
File word: Hello
File word: Friend
清单2:

Edited word: its
Edited word: sit
Edited word: yesman
Edited word: murdered
Edited word: ok
Edited word: deredrum
Edited word: hello
Edited word: friend
这个想法是为了检查哪些单词是彼此的拼字法。如果是的话,我想做的就是重印它们,但要用同一行的字谜:

it's Sit

yes-man

murdered DereDrum

ok

hello

friend
我试着这样做:

        for (int i = 0; i < words.size(); i++)
        {
            System.out.print(words.get(i));
            for (int j = i+1; j < grams.size(); j++)
            {
                anagramChecker(grams.get(i),"",grams.get(j),words.get(j));
            }
            System.out.println();
        }

我尝试使用地图,以便在第二个列表中的单词按字母顺序排序后,我可以按字母顺序对单词进行排序。它的输出看起来大致相同。

重新使用来自的字谜逻辑

反复浏览这两个列表,检查
areAnagrams
true,然后打印出来

for (int i=0;i<size;i++) {  
    String first = firstList.get(i);
    String second = secondList.get(i);
    if (areAnagrams (first, second) {
        System.out.println(first + " " + second);
    }    
}

for(int i=0;iRe使用来自的字谜逻辑

反复浏览这两个列表,检查
areAnagrams
true,然后打印出来

for (int i=0;i<size;i++) {  
    String first = firstList.get(i);
    String second = secondList.get(i);
    if (areAnagrams (first, second) {
        System.out.println(first + " " + second);
    }    
}

for(inti=0;i再做一次……其他人已经告诉了你关键点。
将其放入char数组,排序,比较,完成

package array;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;

public class Anagrams {

    private static ArrayList<Character> convert(String txt) {
    ArrayList<Character> alph = new ArrayList<Character>();
    for (int i = 0; i < txt.length(); i++)
        if (Character.isLetter(txt.charAt(i)))
        alph.add(Character.toLowerCase(txt.charAt(i)));
    Collections.sort(alph);
    return alph;
    }

    public static void main(String[] args) {
    ArrayList<String> first = new ArrayList<String>();
    first.add("it's");
    first.add("Sit");
    first.add("yes-man");
    first.add("murdered");
    first.add("ok");
    first.add("DereDrum");
    first.add("Hello");
    first.add("Friend");

    ArrayList<String> second = new ArrayList<String>();
    second.add("its");
    second.add("sit");
    second.add("yesman");
    second.add("murdered");
    second.add("ok");
    second.add("deredrum");
    second.add("hello");
    second.add("friend");

    ArrayList<Integer> checked = new ArrayList<Integer>();

    for (int i = 0; i < first.size(); i++) {
        String line = "";
        if (!checked.contains(i))
        line += first.get(i) + " ";

        ArrayList<Character> firstChrAry = convert(first.get(i));

        for (int j = i + 1; j < second.size(); j++) {
        ArrayList<Character> secondChrAry = convert(second.get(j));
        if (firstChrAry.size() == secondChrAry.size()) {
            if (firstChrAry.equals(secondChrAry)) {
            line += first.get(j);
            checked.add(j);
            }
        }
        }
        if (!line.equals(""))
        System.out.println(line);
    }

    }
}
封装阵列;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.HashMap;
公共类字谜{
专用静态ArrayList转换(字符串txt){
ArrayList alph=新的ArrayList();
对于(int i=0;i
在此处添加我的输出结果:

坐吧

好家伙

德雷德隆谋杀案

你好


朋友

再做一次……其他人已经告诉你了关键点。 将其放入char数组,排序,比较,完成

package array;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;

public class Anagrams {

    private static ArrayList<Character> convert(String txt) {
    ArrayList<Character> alph = new ArrayList<Character>();
    for (int i = 0; i < txt.length(); i++)
        if (Character.isLetter(txt.charAt(i)))
        alph.add(Character.toLowerCase(txt.charAt(i)));
    Collections.sort(alph);
    return alph;
    }

    public static void main(String[] args) {
    ArrayList<String> first = new ArrayList<String>();
    first.add("it's");
    first.add("Sit");
    first.add("yes-man");
    first.add("murdered");
    first.add("ok");
    first.add("DereDrum");
    first.add("Hello");
    first.add("Friend");

    ArrayList<String> second = new ArrayList<String>();
    second.add("its");
    second.add("sit");
    second.add("yesman");
    second.add("murdered");
    second.add("ok");
    second.add("deredrum");
    second.add("hello");
    second.add("friend");

    ArrayList<Integer> checked = new ArrayList<Integer>();

    for (int i = 0; i < first.size(); i++) {
        String line = "";
        if (!checked.contains(i))
        line += first.get(i) + " ";

        ArrayList<Character> firstChrAry = convert(first.get(i));

        for (int j = i + 1; j < second.size(); j++) {
        ArrayList<Character> secondChrAry = convert(second.get(j));
        if (firstChrAry.size() == secondChrAry.size()) {
            if (firstChrAry.equals(secondChrAry)) {
            line += first.get(j);
            checked.add(j);
            }
        }
        }
        if (!line.equals(""))
        System.out.println(line);
    }

    }
}
封装阵列;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.HashMap;
公共类字谜{
专用静态ArrayList转换(字符串txt){
ArrayList alph=新的ArrayList();
对于(int i=0;i
在此处添加我的输出结果:

坐吧

好家伙

德雷德隆谋杀案

你好

朋友

试试下面的代码

import java.util.ArrayList;
import java.util.List;

public class Client {

    public static void main(String[] args) {

        List<String> lst1 = new ArrayList<String>();
        List<String> lst2 = new ArrayList<String>();

        lst1.add("it's");
        lst1.add("Sit");
        lst1.add("yes-man");
        lst1.add("murdered");
        lst1.add("ok");
        lst1.add("DereDrum");
        lst1.add("Hello");
        lst1.add("Friend");

        lst2.add("its");
        lst2.add("sit");
        lst2.add("yesman");
        lst2.add("murdered");
        lst2.add("ok");
        lst2.add("deredrum");
        lst2.add("hello");
        lst2.add("friend");

        for (int i = 0; i < lst2.size(); i++) {
            String original = lst2.get(i);
            StringBuffer buff = new StringBuffer(original);
            buff.reverse();
            if (lst2.contains(buff.toString())) {
                System.out.println(lst1.get(i) + " "
                        + lst1.get(lst2.indexOf(buff.toString())));
                lst1.remove(lst2.indexOf(buff.toString()));
                lst2.remove(buff.toString());
            } else {
                System.out.println(lst1.get(i));
            }

        }

    }

}
您可以通过单击下面的链接在线运行和检查

请尝试下面的代码

import java.util.ArrayList;
import java.util.List;

public class Client {

    public static void main(String[] args) {

        List<String> lst1 = new ArrayList<String>();
        List<String> lst2 = new ArrayList<String>();

        lst1.add("it's");
        lst1.add("Sit");
        lst1.add("yes-man");
        lst1.add("murdered");
        lst1.add("ok");
        lst1.add("DereDrum");
        lst1.add("Hello");
        lst1.add("Friend");

        lst2.add("its");
        lst2.add("sit");
        lst2.add("yesman");
        lst2.add("murdered");
        lst2.add("ok");
        lst2.add("deredrum");
        lst2.add("hello");
        lst2.add("friend");

        for (int i = 0; i < lst2.size(); i++) {
            String original = lst2.get(i);
            StringBuffer buff = new StringBuffer(original);
            buff.reverse();
            if (lst2.contains(buff.toString())) {
                System.out.println(lst1.get(i) + " "
                        + lst1.get(lst2.indexOf(buff.toString())));
                lst1.remove(lst2.indexOf(buff.toString()));
                lst2.remove(buff.toString());
            } else {
                System.out.println(lst1.get(i));
            }

        }

    }

}
您可以通过单击下面的链接在线运行和检查


对于字谜检查,不要使用递归。将每个字符串复制到
char[]
,对数组进行排序,然后进行简单的字符串比较。显然,首先检查长度是否相等。@Jim Garrison如果我这样做,第一个ArrayList不会与第二个ArrayList进行排序。因为我试图打印第一个ArrayList的结果,就像打印第二个ArrayList一样,所以我不确定这是否有效。对于字谜检查,请不要使用recursion.将每个字符串复制到
char[]
,对数组进行排序,然后进行简单的字符串比较。显然,首先检查长度是否相等。@Jim Garrison如果我这样做,第一个ArrayList不会与第二个ArrayList进行排序。因为我试图打印第一个ArrayList的结果,就像打印第二个ArrayList一样,所以我不确定这是否有效。唯一的问题是这不会重新排序认识到它是和坐是字谜,但它们是。
its
sit
不是字谜。
its
的字谜是
sti
一个字谜不是颠倒过来的词。一个字谜是一个单词,里面有相同数量的字母,它们都有相同数量的字母。唯一的问题是这不能识别它是和坐是字谜,但它们是。
its

it's
Sit
yes-man
murdered DereDrum
ok
Hello
Friend