2015-10-15 96 views
0

我想比較一個4位字符串使用charAt(x)到一個整數,以便找出該字符串中有多少個整數。在字符串中搜索整數。數據類型不匹配?

public static boolean tickets(int numbers) { 

int a = (numbers/100000); 
int b = (numbers/10000) - a*10; 
int c = numbers - a*100000 - b*10000; 
int x = 0; 
int count = 0; 
String s = String.valueOf(c); 

if (numbers/100000 == 0 || numbers/100000 > 9) { 
    return false;         
} 
if (numbers <= 0) { 
    return false; 
} 

while (x < 4) { 
    if (s.charAt(x) == a) { 
    count = count + 1; 
    } 
    x = x + 1; 
     } 

if (count == b) { 
    return true; 
} else { 
    return false; 
}} 

我不會侮辱任何人的情報,並說這是不是一門功課的問題:它是。提示是輸入一個數字(如果是負數或不是6位數字,則返回'false')。爲了得到'true'的回報,該號碼必須具有第一位數字和第二位數字的最後一位數字(什麼?!)。例如,121001將返回true,因爲在最後4位數字中有1次2次。

不管怎麼說,我的問題是,即使s.charAt(x)將具有相同的價值a,至少當我打印出來,並檢查(它們都打印的9或東西即會),我count變量似乎並沒有讓步。我有一個數據類型不匹配?我能做些什麼來解決這個問題?還是我完全用錯誤的方式來解決這個問題?

提前致謝!

+1

你想了解一些基本類型的差異。 'charAt()'顯然返回一個char值......這是可以與int數相比較的,但是究竟是什麼讓你認爲例如字符「1」等於1? [提示:不是...你想簽出像ASCII,代碼頁等所有東西] – GhostCat

+0

備註'(如果爲負數,或不是6位數,則返回'false')'只需要'if(numbers <100000){return false;}'不需要計算 –

回答

0

您有數據類型不匹配。字符「0」不等於整數0一蹴可:

if (s.charAt(x) == a + '0') { 
    count = count + 1; 
} 
0

你如果條件永遠是假的,因爲數據類型不匹配......

嘗試,並以此作爲您的if語句條件:

if(Integer.parseInt(s.charAt(x)+"") == a) 
0

我建議您閱讀以下內容:Convert from Integer to String

基本上,您可以創建一個名爲aString的新字符串變量並將其設置爲Integer.toString(a)