【问题标题】:Double int conversion messup双整数转换混乱
【发布时间】:2013-06-23 22:55:29
【问题描述】:

我不知道为什么当我尝试将 2 个 int 值相乘时,这段代码 sn-p 会产生以下输出。这可能太愚蠢了,但我就是不明白。我在这里粘贴了代码和输出

public static void main(String[] args) {
    // TODO code application logic here
    String numstring = "12122";
    char[] numArray = numstring.toCharArray();
    int num =0;
    int index = 10;
    int count = 0;
    for(int i=numArray.length-1;i>=0;i--){
      int ind = (int)(Math.pow(index,count));
      System.out.print(numArray[i]+"*"+ind);
      System.out.println(" prints as ----->"+numArray[i]*ind);
      count++;
    }
}

输出:

    2*1 prints as ----->50
    2*10 prints as ----->500
    1*100 prints as ----->4900
    2*1000 prints as ----->50000
    1*10000 prints as ----->490000

【问题讨论】:

    标签: java casting type-conversion


    【解决方案1】:

    你没有将两个整数相乘。您将 int, indchar, '2' 相乘,其 ASCII 值为 50(至少在第一种情况下)。您可以使用int[],或者如果您想坚持使用char[],您可以执行以下操作:

    System.out.println(" prints as ----->"+ Character.getNumericValue(numArray[i]) * ind);
    

    【讨论】:

      【解决方案2】:

      字符实际上是整数,例如,字符 '2' 的 int 值为 50。

      要查看哪个整数对应哪个字符,请查看ascii table

      要做你想做的事,你应该使用Character.getNumericValue()方法:

      System.out.println(" prints as ----->"+Character.getNumericValue(numArray[i])*ind);
      

      【讨论】:

      • urgghhh..我讨厌自己这个...谢谢你指出这一点
      猜你喜欢
      • 1970-01-01
      • 2011-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 2015-08-05
      • 2011-08-21
      • 2012-03-20
      相关资源
      最近更新 更多