【问题标题】:Trying to detect chars in if-statement尝试检测 if 语句中的字符
【发布时间】:2013-08-16 13:25:29
【问题描述】:

我在检测 if 语句中的 CHAR 时遇到了一些麻烦。 我有一个分数整数,我把它做成了一个字符串,然后从这个字符串中,我做了一个 char 数组。 我的问题是,当我尝试检测 char 是什么数字时,它返回“Error.png”。

请帮帮我:)

代码:

    scoreString = "" + score;
    System.out.println(scoreString + "  -  " + scoreString.length());
    scoreA = scoreString.toCharArray();
    for(int counter = 0; counter < scoreString.length(); counter++){
            Texture drawT;
            if(scoreA[counter] == 0) drawT = i0;
            else if(scoreA[counter] == 1) drawT = i1;
            else if(scoreA[counter] == 2) drawT = i2;
            else if(scoreA[counter] == 3) drawT = i3;
            else if(scoreA[counter] == 4) drawT = i4;
            else if(scoreA[counter] == 5) drawT = i5;
            else if(scoreA[counter] == 6) drawT = i6;
            else if(scoreA[counter] == 7) drawT = i7;
            else if(scoreA[counter] == 8) drawT = i8;
            else if(scoreA[counter] == 9) drawT = i9;
            else drawT = error;
            MainClass.batch.draw(drawT, 5 + (9 * counter), 95);
    }

【问题讨论】:

  • "它返回 "Error.png"" > 这是你说编译器错误的方式吗?如果是这样,请在将来实际发布编译器错误。
  • 你的 if 构造可以被一个很好的数组查找替换:ideone.com/pQ0Yen - 你只需要将你的 i0i9 变量放入一个数组中并像 i[0] 一样访问它们。

标签: java string if-statement numbers char


【解决方案1】:

scoreA[counter] == 1 将一个字符与数值 1 进行比较,这是不正确的。 '1'1 不同。事实上,'1' 实际上等于十六进制的31。使用类似的东西:

if(scoreA[counter] == '0') drawT = i0;
else if(scoreA[counter] == '1') drawT = i1;
//continue on

我显然包含了一个简短的 sn-p,但它应该足够了。

【讨论】:

    【解决方案2】:

    你想要字符文字。 你需要写

    if(scoreA[counter] == '1')
    

    【讨论】:

      【解决方案3】:

      您的错误是认为数字的 char 表示与数字本身相同 - 它们不是。 chars 代表ASCII 字符(严格来说是unicode,但为此我们可以假设ASCII),所以字符0 的代码不是数字0。要解决此问题,您可以在比较中使用 char 文字:

              if(scoreA[counter] == '0') drawT = i0;
              else if(scoreA[counter] == '1') drawT = i1;
              ... etc
      

      【讨论】:

        【解决方案4】:

        你总是必须在单件外套中设置字符文字

        scoreA[counter] == '0'
        

        【讨论】:

          猜你喜欢
          • 2018-10-31
          • 2015-12-02
          • 2019-01-15
          • 1970-01-01
          • 2015-09-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多