1

10 から 99 までの整数の類似の数字を識別する Java プログラムが必要です。たとえば、23 と 62 を入力した場合、プログラムの出力は「They have a similar digit. すでにこのプログラムを作成しましたが、正しく動作しません

public class 問題 {

 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

下の桁を計算する方法は正しいですが、上の桁を計算する方法が間違っています。剰余を得る前に、数値を 10 で整数で割る必要があります。

int f = (a/10) % 10;

OR与えられる出力は常に同じなので、次のように、4 つの条件を 1 つに結合して演算子を使用する方がよいでしょう。

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 に答える