2013-10-27 43 views
1

我需要一個Java程序來識別10到99之間的整數的相似數字。 例如,如果我輸入23和62,程序的輸出應該是他們有一個類似的數字。 我已經寫了這個程序,但它不能正常工作Java程序檢查相似的數字

公共類問題{

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"); 

    } 
} 
+1

嗯..爲什麼不把他們爲字符串,並檢查是否有任何字符是相同的? – MightyPork

+0

f = a%100; //假設小於100的正輸入,這只是輸入本身 – kviiri

+0

提示:輸出'f'和'd'和/或使用調試器 – Howard

回答

0

你計算較低位的方式是正確的,但你計算方式上一個是錯誤的:你需要十獲取剩餘部分之前整數除數量:

int f = (a/10) % 10; 

因爲你給的總是相同的輸出,你會過得更好結合的四個條件爲一家擁有OR歌劇托爾,像這樣:

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

這是更多的評論.. – MightyPork

+2

@MightyPork不,作爲您作爲答案的家庭作業任務。否則,OP不會學到太多東西。 – dasblinkenlight

+1

@dasblinkenlight謝謝我發現我的錯誤和程序工作! – Cham

0

的問題是你的聲明

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

我想你想的第一個數字,在這種情況下,你應該使用

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

你可以試試這個:

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

還改變你的if情況是這樣的: -

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

試試這個

int l = a%10 ; 
int j = b%10 ; 
int f = a/10 ; // notice the division 
int d = b/10 ; 
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; 
    } 
    } 
} 
0

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

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

只有很少會比99比10,雙方大於和小於)

+0

haha​​hahaha謝謝 – Cham