Java 如何从字符串数组中的字符串中查找重复的字符值

Java 如何从字符串数组中的字符串中查找重复的字符值,java,Java,我试图显示数组中的重复字符串,但代码不起作用。例如:在单词“arrow”中,r出现两次shoq,代码应显示输出“r”。但它不显示任何内容 public class duplicatearray { public static void main(String[] args) { String[] s={"arrow"}; for(int i=0;i<s.length;i++) {

我试图显示数组中的重复字符串,但代码不起作用。例如:在单词“arrow”中,r出现两次shoq,代码应显示输出“r”。但它不显示任何内容

public class duplicatearray {
        public static void main(String[] args)
        {
            String[] s={"arrow"};
            for(int i=0;i<s.length;i++)
            {
                for(int j=i+1;j<s.length;j++)
                {
                    if(s[i].equals(s[j]))
                    {
                        System.out.println("Duplicate value"+s[i]);
                    }
                }
            }

        }
    }
公共类重复数组{
公共静态void main(字符串[]args)
{
字符串[]s={“arrow”};
对于(int i=0;i
例如:在单词“arrow”中,r出现两次shoq,代码应显示输出“r”

您正在检查两个字符串。您想在哪里检查重复字符

if(s[i].equals(s[j]))
应该是

if(s[i].charAt(j) == s[i].charAt(j+1))
String[] s = { "arrow" };
for (int i = 0; i < s.length; i++) {
    for (int j = 0; j < s[i].length() - 1; j++) {
        if (s[i].charAt(j) == s[i].charAt(j + 1)) {
            System.out.println("Duplicate value : " + s[i].charAt(j));
        }
    }
}
然后它检查相同字符串中的字符,也检查print语句中的字符

System.out.println("Duplicate value"+s[i].charAt(j));
循环也错了,应该从第0个字符开始

for(int j= 0 ;j<s[i].length() -1 ;j++)

for(int j=0;j尝试下面的代码片段,它将为您提供所需的内容

    public static void main(String[] args) {

            String[] s = {"arrow"};
            for (int k =0; k < s.length; k++) {

            char[] arr = s[k].toCharArray();//get char array

            for (int i = 0; i < arr.length; i++) // 1
            {
                int duplicateCount = 0;
                for (int j = 1; j < arr.length; j++) {
                    if (arr[i] == (arr[j])) {
                        duplicateCount++;//duplicate variable
                        if (duplicateCount >= 2)
                            System.out.println("Duplicate value " + arr[i]);
                    }
                }
            }
        }
    }
publicstaticvoidmain(字符串[]args){
字符串[]s={“arrow”};
对于(int k=0;k=2)
系统输出println(“重复值”+arr[i]);
}
}
}
}
}

我发现您的代码中有一个缺陷

字符串[]s={“arrow”}

您不需要将其声明为数组。只需一个字符串就足够了。如果对此调用s[i],它将始终返回“arrow”,而不是预期的“a”或“r”。您必须为其指定一个char[]

无论如何,我在代码中使用了您的输入,并打印出了必要的语句。请仔细阅读。希望对您有所帮助

尝试使用HashSet。它可以提供更好的性能

import java.util.Collection;
import java.util.HashSet;


public class duplicate {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String[] s={"arrow"};
        System.out.println(s[0]);
        HashSet<Character> hash = new HashSet<Character>();
        char[] s1 = s[0].toCharArray();
        for(char c : s1){
            if(!(hash.add(c)))
                System.out.println(c);
        }

    }

}
import java.util.Collection;
导入java.util.HashSet;
公共类副本{
/**
*@param args
*/
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
字符串[]s={“arrow”};
System.out.println(s[0]);
HashSet hash=新HashSet();
char[]s1=s[0]。toCharArray();
用于(字符c:s1){
如果(!(hash.add(c)))
系统输出打印ln(c);
}
}
}

您的代码正在使用两个for循环,随着字符串大小的增加,这可能需要更多的时间。请尝试使用下面的代码片段

public class DuplicateArray {
    public static void main (String...args) {
        String str = new String("arrow");
        int[] dupArray = new int[256];
        for (int i=0;i<str.length();i++) {
            char ch = str.charAt(i);
            if (dupArray[ch] == 0) {
                dupArray[ch]++;
            } else {
                System.out.println("Duplicate value : "+ch+" ");
            }
        }
    }
}
公共类重复数组{
公共静态void main(字符串…参数){
String str=新字符串(“箭头”);
int[]dupArray=新int[256];

对于(int i=0;i
我试图显示数组中的重复字符串,我想问题清楚地说明了这一点otherwise@AbSin是的。问题和描述不匹配。是的,我也注意到了,不应该怀疑你。@AbSin没问题。不管怎样,标题和描述都很混乱:DYou正在检查字符串数组。你需要吗他的数组?或者你只需要一个字符串。你的问题标题和描述不匹配。我在阅读了描述后编辑了你的标题。如果没有意义,请随意将其还原。@PrathibhaChiranthana从示例中,我猜在字符串中,重复char的@ꜱᴜʀᴇꜱʜᴀᴛᴛᴀ 字符串[]s={“arrow”};被搞糊涂了。@PrathibhaChiranthana其中有什么棘手的地方?它只是一个只有一个元素的字符串数组