用于检查相似数字的Java程序

时间:2013-10-27 17:38:37

标签: java

我需要一个Java程序来识别10到99之间整数的相似数字。 例如,如果我输入23和62,程序的输出应该是它们具有相似的数字。 我已经编写了这个程序,但它无法正常工作

公共课问题{

 public static void main(String[] args) {

    Scanner scan = new Scanner (System.in) ;
    int a = scan.nextInt() ;
    int b = scan.nextInt() ;

    int l = a%10 ;
    int j = b%10 ;
    int f = a%100 ;
    int d = b%100 ;

    if (a>99 && a<10 && b>99 && b<10) {
        System.out.println("N/A") ;
    }

    if (l==j){

        System.out.println("They have a similar digit");
    }
    else if(f==d){

        System.out.println("They have a similar digit");

    }
    else if(l==d){

        System.out.println("They have a similar digit");
    }
    else if(f==j){

        System.out.println("They have a similar digit");
    }
    else
        System.out.println("They don't have similar digit");

    }
}

7 个答案:

答案 0 :(得分:1)

以下是使用字符串的简单解决方案:

String s1 = "" + numberOne;
String s2 = "" + numberTwo;

outer:
for(char c : s1.toCharArray()) {
  for(char d : s2.toCharArray()) {
    if(c == d) {
      System.out.println("They have the same digit.");
      break outer;
    }
  }
}

答案 1 :(得分:0)

计算低位数的方式是正确的,但计算高位的方式是错误的:在获得余数之前,需要将数字除以10整数除以:

int f = (a/10) % 10;

由于您提供的输出始终相同,因此最好将这四个条件合并为一个OR运算符,如下所示:

if ((l==j) || (f==d) || ... )

答案 2 :(得分:0)

问题是你的声明

    int f = a % 100;
    int d = b % 100;

我想你想要的第一个数字,在这种情况下你应该使用

    int f = a / 10;
    int d = b / 10;

答案 3 :(得分:0)

你可以试试这个:

int f = a / 10;
int d = b / 10;

同样改变你的if条件: -

if((a>99 || a<10) && (b>99 || b<10))

答案 4 :(得分:0)

试试这个

int l = a%10 ;
int j = b%10 ;
int f = a/10 ;    // notice the division
int d = b/10 ;

答案 5 :(得分:0)

你可能想要||而不是&amp;&amp;在这一行:

  if (a>99 && a<10 && b>99 && b<10) {

只有极少数会大于99且小于10.;)

答案 6 :(得分:0)

您还可以查看n1p1缩写为第一个参数的第一部分以及n2p2等等。

    if ((num1 < 10 || num1 > 99) || (num2 < 10 || num2 > 99)) {
        return false;
    }

    int n1p1 = num1 / 10;
    int n1p2 = num1 % 10;
    int n2p1 = num2 / 10;
    int n2p2 = num2 % 10;`

    n1p1 = (char) n1p1;
    n1p2 = (char) n1p2;
    n2p1 = (char) n2p1;
    n2p2 = (char) n2p2;

     if ((n1p1 == n2p1 || n1p1 == n2p2) ||
            (n1p2 == n2p1 || n1p2 == n2p2) ||
            (n2p1 == n1p1 || n2p1 == n1p2) ||
            (n2p2 == n1p1 || n2p2 == n1p2)) {

        return true;
    }
    return false;