Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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中的重复检查器_Java - Fatal编程技术网

Java中的重复检查器

Java中的重复检查器,java,Java,好的,我是这个网站的新手,但我知道我不应该在这里问HW问题,但我问的确实是HW,但它已经完成并提交(并评分),我只是希望我的程序能够更好地理解:) 为了证明我已经完成了,并且没有尝试快速完成,这里有一个到提交页面的链接: 现在在程序上…我应该创建一个程序,检查用户输入中的重复字符串,然后按排序顺序输出所有“唯一”字符串(不重复的字符串),然后按排序顺序在先前输出的正下方输出“非唯一”字符串。我的指导老师告诉我们,我们必须使用一个“三重嵌套循环”,我假设它只是for循环中的for循环,for循环

好的,我是这个网站的新手,但我知道我不应该在这里问HW问题,但我问的确实是HW,但它已经完成并提交(并评分),我只是希望我的程序能够更好地理解:)

为了证明我已经完成了,并且没有尝试快速完成,这里有一个到提交页面的链接:

现在在程序上…我应该创建一个程序,检查用户输入中的重复字符串,然后按排序顺序输出所有“唯一”字符串(不重复的字符串),然后按排序顺序在先前输出的正下方输出“非唯一”字符串。我的指导老师告诉我们,我们必须使用一个“三重嵌套循环”,我假设它只是for循环中的for循环,for循环中的for循环……我得到了所有需要将字符串存储在数组中的结果,在这种情况下,我无法也没有找到其他方法。我提交的这份作业是:

package Homework2;
import java.util.Scanner;
public class Homework2 {    
    public static void main(String[] args) {
        Scanner stdin = new Scanner(System.in);
        System.out.println("Enter a list of words:");
        String[] words = stdin.nextLine().split(" ");
        System.out.println(words.length);
        String[] array = new String[words.length];
        for (int i = 0; i < words.length; i++) {
            if(words == words)           
                for (int j = 0; j < words.length; j++) {
                    array[j] = words;
                    System.out.println(array[j]);
                }

        }
    }
}               
package作业2;
导入java.util.Scanner;
公共课家庭作业2{
公共静态void main(字符串[]args){
扫描仪标准输入=新扫描仪(System.in);
System.out.println(“输入单词列表:”);
String[]words=stdin.nextLine().split(“”);
System.out.println(单词长度);
String[]数组=新字符串[words.length];
for(int i=0;i
我想再次强调,我已经提交了这项作业,我只是希望能够正确地完成这项作业,以进一步加深我的理解


任何帮助都将不胜感激

此代码有两个明显的编译时问题:

words==words
始终为真。我想你是想测试这条线是否有重复,但这不是做这件事的方法

array[j]=words
尝试将字符串[]分配给字符串变量

这个作业实际上比乍一看要难一点。最棘手的部分是按排序顺序打印唯一字符串。最实用的解决方案是使用链表,这允许在列表中间插入。我确实假设不允许使用Collections.sort()。我想也可能不允许使用LinkedList,但你在问题中没有提到这一点

    String[] words = { "1", "4", "2", "4", "3", "1" };
    LinkedList<String> unique = new LinkedList<String>();
    LinkedList<String> duplicates = new LinkedList<String>();
    unique.add(words[0]);
    for (int i = 1; i < words.length; i++)
    {
        boolean found = false;
        for (String uniqueWord : unique)
        {
            if (words[i].equals(uniqueWord))
            {
                duplicates.add(words[i]);
                found = true;
                break;
            }
        }
        if (!found)
        {
            boolean added = false;
            for (int index = 0; index < unique.size(); index++)
            {
                if (words[i].compareTo(unique.get(index)) < 0)
                {
                    unique.add(index, words[i]);
                    added = true;
                    break;
                }
            }
            if (!added)
                unique.addLast(words[i]);
        }
    }
    for (String word : unique)
        System.out.println(word);
    System.out.println("--");
    for (String word : duplicates)
        System.out.println(word);
String[]words={“1”、“4”、“2”、“4”、“3”、“1”};
LinkedList unique=新建LinkedList();
LinkedList duplicates=新建LinkedList();
唯一。添加(字[0]);
for(int i=1;i
我喜欢用一个相当简单的解决方案来解决这个问题:

Set<String> used = new HashSet<>();

public boolean wasUsed(String s) {
    return used.add(s);
}

//using the method
if (wasUsed(yourString)) {
    // duplicate!
}
Set used=new HashSet();
已使用公共布尔值(字符串s){
返回已使用。添加(s);
}
//使用该方法
如果(使用了(你的字符串)){
//重复!
}
集合仅包含一个元素的1个元素,添加重复项时将返回false。使管理变得非常容易

至于您的场景,我只需保留一组单独的
单词,并在您找到重复的单词时将其删除


您可以进一步阅读,了解这些有用的工具。

words==words
总是正确的。提交一个甚至不编译的解决方案有点奇怪这是什么words==words?
array[j]=words不起作用