Java 为什么这会一直打印出来?
我试图通过将圆周率转换为字符串来打印出圆周率的第n个位置,但是它一直打印出51。您希望返回一个字符,而不是一个int,除非您希望显示数字的ASCII字符代码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) {
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);
}