【问题标题】:Converting index of string to integers将字符串的索引转换为整数
【发布时间】:2017-01-24 18:02:58
【问题描述】:

我正在尝试将特定字符串索引处的字符转换为整数。

这是我拥有的功能:

public int[] digitsOfPi(int n) {
    {            
        String piDigits = Double.toString(Math.PI);
        int[] piArray = new int[n];           
        for (int i = 0; i < n; i++)
        {
            piArray[i] = Character.digit(piDigits.charAt(i), n);;
        }
        return piArray;
    }
}

不幸的是,当我用digitsOfPi(3) 测试这个功能时,我得到了

[I@15db9742

任何帮助将不胜感激。

【问题讨论】:

  • 你用什么输出它的结果?
  • System.out.println(digitsOfPi(3));
  • 您正在打印数组对象 id,循环遍历数组以打印它的元素
  • 实际功能是否正常工作但打印不正确,还是功能本身不正确?
  • 貌似打印不正确,根据函数名猜测要获取3位pi,所以打印不正确

标签: java string char int


【解决方案1】:

使用Arrays.toString(arg)

System.out.println(Arrays.toString(digitsOfPi(3)));

... 获得漂亮的结果输出,例如 [1, 2, 3]

您打印的是对数组的引用,而不是其内容。这就是为什么我首先询问您输出结果的方式。


Character.digit() 的签名是(char ch, int RADIX)。所以你使用三进制数系统或如何调用它。此外,当char ch 不包含有效数字时,它返回-1,这是你的情况3.1415...[invalid, invalid, 1]。您需要使用 10 作为参数并跳过第二个位置。 或者你可以简单地做

piArray[i] = piDigits.charAt(i) - '0';

【讨论】:

  • 这就是你在数组中得到的。等等,我去看看函数本身
  • 好的,效果好一点。不幸的是,现在我得到 [3, -2, 1],其中 -2 代表“。” (小数位)。有什么办法可以去掉?
【解决方案2】:

您使用System.out.pritln(digitsOfPi(3) 来获取第三个位置的元素,但实际上它返回一个int 数组

所以尝试使用以下代码sn-p,而不是-

    public static int digitsOfPi(int n) {
       String piDigits = Double.toString(Math.PI);
       char[] array = piDigits.toCharArray();
       return Character.getNumericValue(array[3]);
   }

【讨论】:

  • 谢谢,但我特别需要这个方法来返回一个 int 数组。
  • @statsguyz 现在你可以从中得到一个 int
猜你喜欢
  • 1970-01-01
  • 2021-08-17
  • 2015-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
相关资源
最近更新 更多