Reputation: 21
I'm asked to write a program that finds the common characters in two strings using the indexOf(char) method and a for loop. Here's what I have so far - the output comes out blank still.
import java.util.Scanner;
public class ClassName {
public static void main (String args []) {
Scanner input = new Scanner (System.in);
String a = "";
String b = "";
String c = "";
System.out.print("Enter two words: ")
a = input.nextLine();
b = input.nextLine();
for (int i = 0; i < a; i++){
char ch = a.charAt(i);
if (b.indexOf(ch) != -1){
c = c+String.valueOf(ch);
}
}
System.out.print("Common letters are: "+c);
}
}
I'm not sure where to go from here.
thanks
Upvotes: 1
Views: 13294
Reputation: 311
public class CommonCharFromTwoString {
public static void main(String args[])
{
System.out.println("Enter Your String 1: ");
Scanner sc = new Scanner(System.in);
String str1 = sc.nextLine();
System.out.println("Enter Your String 2: ");
String str2 = sc.nextLine();
Set<String> str = new HashSet<String>();
for(int i=0;i<str1.length();i++){
for (int j = 0; j < str2.length(); j++) {
if(str1.charAt(i) == str2.charAt(j)){
str.add(str1.charAt(i)+"");
}
}
}
System.out.println(str);
}
}
Upvotes: 0
Reputation: 417
public Set<Character> commonChars(String s1, String s2) {
Set<Character> set = new HashSet<>();
for(Character c : s1.toCharArray()) {
if(s2.indexOf(c) >= 0) {
set.add(c);
}
}
return set;
}
Upvotes: 0
Reputation: 4434
Your code will duplicate common characters for example if you compare "developper" to "programmer" your result string will contain three time the e character
If you don't want that behaviour I suggest that you also use a Set like this:
public class CommonCharsFinder {
static String findCommonChars(String a, String b) {
StringBuilder resultBuilder = new StringBuilder();
Set<Character> charsMap = new HashSet<Character>();
for (int i = 0; i < a.length(); i++) {
char ch = a.charAt(i); //a and b are the two words given by the user
if (b.indexOf(ch) != -1){
charsMap.add(Character.valueOf(ch));
}
}
Iterator<Character> charsIterator = charsMap.iterator();
while(charsIterator.hasNext()) {
resultBuilder.append(charsIterator.next().charValue());
}
return resultBuilder.toString();
}
// An illustration here
public static void main(String[] args) {
String s1 = "developper";
String s2 = "programmer";
String commons = findCommonChars(s1, s2);
System.out.println(commons);
}
}
Result from the example:
Upvotes: 2