【问题标题】:Searching a String for an integer. Datatype mismatch?在字符串中搜索整数。数据类型不匹配?
【发布时间】:2016-01-14 14:30:31
【问题描述】:

我正在尝试将使用 charAt(x) 的 4 位字符串与整数进行比较,以找出字符串中有多少个整数。

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,因为 1 在最后 4 位出现 2 次。

无论如何,我的问题是即使s.charAt(x)a 具有相同的值,至少当我将它们打印出来并检查时(即它们都会打印9 或其他东西),我的countvariable似乎没有让步。我有数据类型不匹配吗?我能做些什么来解决这个问题?还是我完全以错误的方式解决了这个问题?

提前致谢!

【问题讨论】:

  • 你想了解一下原始类型的区别。 charAt() 显然返回一个 char 值......是的,可以与一个 int 数字进行比较,但究竟是什么让你认为字符“1”例如“等于”1? [提示:这不是......你想签出 ASCII、代码页等类似的东西]
  • 旁注(if negative, or not 6 digits, return 'false') 只需要if (numbers&lt;100000){return false;} 不需要那个计算

标签: java string casting char int


【解决方案1】:

您的数据类型不匹配。字符 '0' 不等于整数 0。一种快速解决方法可能是:

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

【讨论】:

    【解决方案2】:

    您的 if 条件始终为 false,因为数据类型不匹配...

    尝试将其用作您的 if 语句条件:

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

    【讨论】:

      【解决方案3】:

      我建议您阅读以下内容:Convert from Integer to String

      基本上,您可以创建一个名为aString 的新字符串变量并将其设置为Integer.toString(a)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多