2015-10-15 94 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)