それらが等しいかどうかを確認したい場合は、次を使用できます。
int val = org.compareTo(check);
それらが等しい場合は 0 を返し、org がcheck の前にある場合は負の値を返し、org が check の後にある場合は正の値を返します。
それらが等しくない最初の位置を本当に返したい場合は、次の関数を使用します。
int firstMismatch(String org, String check)
{
int limit = (org.length()>check.length())?org.length():check.length();
for(int i=0;i<limit;i++)
{
try{
if(org.charAt(i)!=check.charAt(i))
{
return i; //If one of the strings end, that's the position they are different, otherwise there is a mismatch. Either way, just return the index of mismatch
}
}
catch(Exception e)
{
if(org.length()!=check.length())
{
return(i); //Execution comes here only when length of strings is unequal
//Exception occurs because first string is smaller than
// the second or vice versa. Say if you use "fred" and"fredd" as org and check
//respectively, "fred" is smaller than "fredd" so accessing org[4] is not allowed.
//Hence the exception.
}
System.out.println("Problem encountered"); //Some other exception has occured.
return(-2);
}
}
return(-1); //if they are equal, just return -1
}
編集:そして、あなたのコードでは、次のように呼び出します:
public class CheckPasswords extends ConsoleProgram
{
public void run()
{
while(true)
{
String org = readLine("Enter Password: ");
String check = readLine("Confirm Password: ");
int mismatchPosition = firstMisMatch(org,check);
if(mismatchPosition==-1)
{
println("Password Confirmed");
}
else
{
println("Passwords do not match from position "+mismatchPosition);
}
}
}
}