[英]Comparing two strings in java character by character
我是java的初學者,我試圖通過char比較java char中的兩個字符串,並通過以下代碼查找它們有多少不同的字符,但它不起作用,
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++;
}
}`
有小費嗎?
用這個:
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++;
}
}
使用charAt(index)方法並對兩個字符使用'=='運算符:
c1 = w1.charAt(j);
c2 = w2.charAt(j);
if (c1 == c2) ){
counter++;
}
int i =0;
for(char c : w1.toCharArray())){
if(i < w2.length() && w2.charAt(i++) != c)
counter++;
}
我們可以用substring
解決問題。 但是讓我們先看看你的代碼:
// 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++;
}
}
基於substring
的解決方案可能是這樣的:
for(int j=0; j < min; j++) {
s1 = w1.substring(j,j+1);
s2 = w2.substring(j,j+1);
if (!s1.equalsIgnoreCase(s2) ){
counter++;
}
}
我的筆記來自一個java培訓教程,需要與charAt()和嵌套循環進行字符串比較...該方法可以很容易地更改為從源字符串返回不匹配的字符...但我會把那個留給你...... ;-)
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) );
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.