Comparing two strings in a java character by character

I start in java, I try to compare two lines in java char to char and find out how many different characters they have in the following code, but this does not work,

min is the min between the 2 strings for(int i=0; i<min-1; i++){ s1 = w1.substring(j,j++); s2 = w2.substring(j,j++); if (! s1.equalsIgnoreCase(s2) ){ counter++; } }` 

Any tips?

+8
java string char compareto
source share
5 answers

Use this:

 char[] first = w1.toLowerCase().toCharArray(); char[] second = w2.toLowerCase().toCharArray(); int minLength = Math.min(first.length, second.length); for(int i = 0; i < minLength; i++) { if (first[i] != second[i]) { counter++; } } 
+9
source share

Use the charAt (index) method and use the "==" operator for two characters:

 c1 = w1.charAt(j); c2 = w2.charAt(j); if (c1 == c2) ){ counter++; } 
+3
source share
 int i =0; for(char c : w1.toCharArray())){ if(i < w2.length() && w2.charAt(i++) != c) counter++; } 
+2
source share

We can solve the problem with substring . But first look at your code:

 // assuming, min is the minimum length of both strings, // then you don't check the char at the last position for(int j=0; j < min-1; j++) { // s1, s2 will always be empty strings, because j++ is post-increment: // it will be incremented *after* it has been evaluated s1 = w1.substring(j,j++); s2 = w2.substring(j,j++); if (!s1.equalsIgnoreCase(s2) ){ counter++; } } 

A substring based solution might be:

 for(int j=0; j < min; j++) { s1 = w1.substring(j,j+1); s2 = w2.substring(j,j+1); if (!s1.equalsIgnoreCase(s2) ){ counter++; } } 
+1
source share

My notes are from a java training course that requires comparing strings with charAt () and nested loops ... The method can be easily changed to return inconsistent characters from the original string ... but I will leave it to you ...; -)

 public class SubString { public static boolean findTarget( String target, String source ) { int target_len = target.length(); int source_len = source.length(); boolean found = false; for(int i = 0; ( i < source_len && !found ); ++i) { int j = 0; while( !found ) { if( j >= target_len ) { break; } /** * Learning Concept: * * String target = "for"; * String source = "Searching for a string within a string the hard way."; * * 1 - target.charAt( j ) : * The character at position 0 > The first character in 'Target' > character 'f', index 0. * * 2 - source.charAt( i + j) : * * The source strings' array index is searched to determine if a match is found for the * target strings' character index position. The position for each character in the target string * is then compared to the position of the character in the source string. * * If the condition is true, the target loop continues for the length of the target string. * * If all of the source strings' character array element position matches the target strings' character array element position * Then the condition succeeds .. */ else if( target.charAt( j ) != source.charAt( i + j ) ) { break; } else { ++j; if( j == target_len ) { found = true; } } } } return found; } public static void main ( String ... args ) { String target = "for"; String source = "Searching for a string within a string the hard way."; System.out.println( findTarget(target, source) ); } } 
0
source share

All Articles