我正在尝试从数组中显示重复的字符串但代码不起作用。例如:在单词" 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]);
}
}
}
}
}
答案 0 :(得分:1)
例如:在单词&#34; arrow&#34; r来了两次,代码应该显示输出&#39; r&#39;。
您正在检查两个字符串。您想要检查重复字符的位置
if(s[i].equals(s[j]))
应该是
if(s[i].charAt(j) == s[i].charAt(j+1))
然后检查相同字符串中的字符。还有印刷声明
System.out.println("Duplicate value"+s[i].charAt(j));
你循环也错了,你应该从第0个字符
开始for(int j= 0 ;j<s[i].length() -1 ;j++)
总的来说应该是
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));
}
}
}
答案 1 :(得分:0)
尝试使用以下代码片段它将为您提供所期望的内容。
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]);
}
}
}
}
}
答案 2 :(得分:0)
我看到你的代码存在缺陷。
String [] s = {&#34; arrow&#34;};
您无需将其声明为数组。只需要一个字符串即可。如果你在这上面调用s [i],它将始终返回&#34; arrow&#34;不是&#39; a&#39;或者&#39; r&#39;正如你所料。你必须有一个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);
}
}
}
答案 3 :(得分:0)
你的代码使用两个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+" ");
}
}
}
}