【问题标题】:Get a specific digit of a number from an int in Java [duplicate]从Java中的int获取数字的特定数字[重复]
【发布时间】:2012-03-04 10:52:39
【问题描述】:

可能重复:
Return first digit of an integer

在我的 java 程序中,我将一个数字存储在一个数组中。

p1Wins[0] = 123;

如何检查p1Wins[0] 的第一位数字?还是第二个或第三个?我只需要能够找到任何特定数字的值。

谢谢!

【问题讨论】:

  • 将其转换为字符串并使用charAt?到目前为止,您尝试过什么?
  • 出于好奇:这个的用例是什么?为什么你需要得到那个数字?可能有更好的方法来实现您的最终目标,因此您可能需要详细说明一下。

标签: java arrays int


【解决方案1】:
Integer(plWins[0]).toString().charAt(0)

您正在将您的号码转换为字符串,然后执行 charAt。 0 也可以替换为任何其他字符。它不是太优雅,但我相信 Java 没有提供任何更直接的方法。如果 char 不是您的首选类型,您也可以选择将其转换为 int。

【讨论】:

    【解决方案2】:

    Modular arithmetic 可以用来完成你想要的。例如,如果您将123 除以10,然后取余数,您将得到第一个数字3。如果您将123 除以100,然后将结果除以10,您将得到第二个数字2。更一般地,一个数字的第n位可以通过公式(number / base^(n-1)) % base得到:

    public int getNthDigit(int number, int base, int n) {    
      return (int) ((number / Math.pow(base, n - 1)) % base);
    }
    
    System.out.println(getNthDigit(123, 10, 1));  // 3
    System.out.println(getNthDigit(123, 10, 2));  // 2
    System.out.println(getNthDigit(123, 10, 3));  // 1
    

    【讨论】:

      【解决方案3】:

      您将不得不做一些数学魔术来获得任意数字的第 n 位,如果您希望它是一个数字,基本上使用除法和模 10。否则字符串操作将起作用。

      int nth ( int number, int index ) {
          return ((int)number / java.lang.Math.pow(10, index)) % 10;
      }
      
      char nth ( int number, int index ) {
          return String.valueOf(java.lang.Math.abs(number)).charAt(index);
      }
      

      请注意,取模方法将取右侧,字符串取左侧;

      【讨论】:

      • 我认为你不想在那里使用异或 (^)。
      • @GregHewgill - 哈哈,是的,对不起,我用伪代码制作了函数原型,然后突然不记得 Math.pow 函数,所以我不得不去查找它。
      【解决方案4】:

      试过

      String.valueOf(Math.abs((long)x)).charAt(0)
      

      ?

      【讨论】:

        猜你喜欢
        • 2023-04-06
        • 2019-02-22
        • 2013-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多