Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么这会一直打印出来?_Java - Fatal编程技术网

Java 为什么这会一直打印出来?

Java 为什么这会一直打印出来?,java,Java,我试图通过将圆周率转换为字符串来打印出圆周率的第n个位置,但是它一直打印出51。您希望返回一个字符,而不是一个int,除非您希望显示数字的ASCII字符代码 public class Main { public static void main(String[] args) { System.out.println(digitofPi(0)); } public static int digitofPi(int digit) {

我试图通过将圆周率转换为字符串来打印出圆周率的第n个位置,但是它一直打印出51。

您希望返回一个字符,而不是一个int,除非您希望显示数字的ASCII字符代码

public class Main
{
    public static void main(String[] args) 
    {
        System.out.println(digitofPi(0));
    }
    public static int digitofPi(int digit)
    {
        String x = String.valueOf(Math.PI);
        char result = x.charAt(digit);
        return result;
    }
}
请注意,如果不希望将小数点视为第二位数字,则应删除字符串中的小数点

public static char digitofPi(int digit) {
    String x = String.valueOf(Math.PI);
    char result = x.charAt(digit);
    return result;
}

让我们一步一步地考虑你的代码,让我们考虑π=3.1415

String x = String.valueOf(Math.PI).replace(".", "")
所以,当你

Math.PI = 3.1415
然后

当你这样做的时候:

x = "3.1415"
然后结果变成“3”

如果你从一个字符返回一个int,它将取它的ASCII值,所以:

char result = x.charAt(digit);
因此,您可以在方法上返回char或String

'3' = 51 

这个会回来的

return result

您正在将字符转换为int,这意味着您将得到它的ASCII码。实际上是Unicode代码点,但对于您的情况来说是一样的


如果你看它,你会发现0的代码是48,3的代码是53。因此,您必须从中减去48。

您得到了将数字转换为字符串的部分,但您有点忘记了以另一种方式返回的部分。对不起,这是什么问题的答案?您似乎误解了这个问题。OP不明白为什么他们的程序会打印出51,我猜他们希望打印出3。
return result
public static int digitofPi(int digit) {
    String x = String.valueOf(Math.PI);
    return x.charAt(digit);
}