1

我需要一个 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");

    }
}
4

7 回答 7

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;
    }
  }
}
于 2013-10-27T17:44:47.320 回答
0

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

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

a 很少会同时大于 99 和小于 10。;)

于 2013-10-27T17:46:06.150 回答
0

您计算下位数字的方式是正确的,但您计算上位数字的方式是错误的:在获得余数之前,您需要将数字除以十:

int f = (a/10) % 10;

由于您给出的输出始终相同,因此最好将四个条件组合为一个 withOR运算符,如下所示:

if ((l==j) || (f==d) || ... )
于 2013-10-27T17:40:54.753 回答
0

问题是你的声明

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

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

    int f = a / 10;
    int d = b / 10;
于 2013-10-27T17:41:15.697 回答
0

你可以试试这个:

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

还可以像这样更改您的 if 条件:-

if((a>99 || a<10) && (b>99 || b<10))
于 2013-10-27T17:41:42.400 回答
0

尝试这个

int l = a%10 ;
int j = b%10 ;
int f = a/10 ;    // notice the division
int d = b/10 ;
于 2013-10-27T17:41:48.720 回答
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;
于 2018-06-08T13:45:54.030 回答