2016-12-16 36 views
-3

這裏談到Java中我的代碼:我想寫一個java程序使用字符串數組找到重複的字符串

import java.util.Scanner; 

public class repetedstring 
{ 
    public static void main(String[] args) 
    { 
     int n = 0; 
     Scanner a=new Scanner(System.in); 
     System.out.println("Enter the value of n:"); 
     n=a.nextInt(); 
     String s[]=new String[n]; 
     for (int i = 0; i <n; i++) 
     { 
      s[i]=a.nextLine();  
     } 
     for (int i = 0; i<n-1 ; i++) 
     { 
      if(s[i]==s[i+1]) 
      { 
       System.out.println(s[i]); 
      } 
      else 
      { 
       System.out.println("not"); 
      }  
    } 
} 

} 

如果我給n的值爲5只4個輸入由編譯器得到和其他部分只工作。請爲我提供一些解決方案。

+1

[公開信給學生家庭作業的問題(http://meta.softwareengineering.stackexchange.com/questions/ 6166 /開信給學生帶作業問題) – byxor

+0

你能解釋一下嗎?並添加預期的輸出? –

回答

0

因爲使用==比較兩個字符串,這是不是在Java中使用,

因此需要使用.equals

if (s[i].equals(s[i + 1])) { 
    System.out.println(s[i]); 
} else { 
    System.out.println("not"); 
} 

如果你想不檢查所有的數組,你可以使用break();來完成你的循環,就像這樣:

if (s[i].equals(s[i + 1])) { 
    System.out.println(s[i]); 
    break(); 
} else { 
    System.out.println("not"); 
} 

這應該對你有所幫助。

+0

而不是重新回答一個重複的問題,它應該被標記。 – byxor

1

您填寫的陣列後,改變你有這樣的:

ArrayList<String> strings = new ArrayList(); 
for(String str : s){ 
    if(strings.contains(str){ 
     System.out.println(str); 
    } else { 
     strings.add(str); 
     System.out.println("not"); 
    } 
} 

此檢查重複的字符串數組中的任何地方,而不是兩個相同的一排。
如果需要使用數組,不能使用ArrayList,試試這個來代替:

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(s[i]); 
     } else { 
      System.out.println("not"); 
     } 
    } 
} 
相關問題