给出两个字符串的奇数字符

时间:2016-11-28 19:05:55

标签: java string

初学者 -

我需要在一组两个字符串中找到奇数字符。一切都在编译,但是当它打印出奇怪的字符时,它会打印出更长字符串的字符。有谁知道我怎么能解决它?

感谢

public class odd
{

  public static void main(String[] args)
  {
    String str1;
    String str2;

    Scanner keyboard = new Scanner(System.in);

    System.out.println("Enter 2 words:");
    str1 = keyboard.nextLine();
    str2 = keyboard.nextLine();


   int n1 = str1.length();
   int n2 = str2.length();

   int x1 = 0, x2 = 0;

  if (Math.abs(n1-n2)==1)
  {
    if (n1 > n2)
    {
      x1 = n1;
      x2 = n2;
    }

   if(n1 < n2)
   {
    x1 = n2;
    x2 = n1;

    String temp = str1;

    str1 = str2;
    str2 = str1;
  }
    }
  else
  {
    System.out.print("Invalid input.");
  }



 for (int i=0; i < x1; i++)
 {
   for (int j = 0; j < x2; j++)
   {
     if(str1[i]==str2[j])
     {
       System.out.println("Extra letter is: " + str1[i]);
       break;
     }
   }
  }
 }
}

3 个答案:

答案 0 :(得分:0)

 if(str1[i]==str2[j])
 {
   System.out.println("Extra letter is: " + str1[i]);
   break;
 }

您正在检查字符是否匹配,然后打印是否匹配,当您声明的意图相反时:检查它们是否不同,然后打印(如果是这种情况)。将您的 == 更改为!= ,您应该会得到所需的结果。

为清晰起见, == 是等于运算符,!= 是不等运算符。

答案 1 :(得分:0)

为了使程序正常工作,您的第一个字符串减去第二个字符串必须等于1: Math.abs(N1-N2)== 1 修复这段代码,提示:是否需要?

答案 2 :(得分:0)

@jjuutz使用以下方法来获取两个字符串之间的差异。

array_keys(get_object_vars($oJSON->{$oQ->sQuestionName}))[0]