大家好,所以我正在尝试制作一个可以打印的程序:
public class L3Q5 // Class
{
public static void main(String[] args) // Method: main
{
double x = 3.14159265358979;
System.out.printf("%.1f %n", x);
System.out.printf("%.2f %n", x);
System.out.printf("%.3f %n", x);
System.out.printf("%.4f %n", x);
System.out.printf("%.5f %n", x);
System.out.printf("%.6f %n", x);
System.out.printf("%.7f %n", x);
System.out.printf("%.8f %n", x);
System.out.printf("%.9f %n", x);
System.out.printf("%.10f %n", x);
System.out.printf("%.11f %n", x);
System.out.printf("%.12f %n", x);
System.out.printf("%.13f %n", x);
System.out.printf("%.14f %n", x);
}
}
打印方式如下:
3.14
3.142
3.1416
3.14159
3.141593
3.1415927
3.14159265
3.141592654
3.1415926536
3.14159265359
3.141592653590
3.1415926535898
3.14159265358979
到目前为止,我必须使用for循环和printf来完成这项工作,但我有点失落:
public class L3Q53 // Class
{
public static void main(String[] args) // Method: main
{
double x = 3.14159265358979;
for (int i = 1; i < 13; i++) {
System.out.printf("%.14f %n", x);
}
}
}
这是什么打印只是
3.14159265358979
3.14159265358979
3.14159265358979
3.14159265358979
3.14159265358979
3.14159265358979
3.14159265358979
3.14159265358979
3.14159265358979
3.14159265358979
3.14159265358979
3.14159265358979
请帮助!!!!
答案 0 :(得分:1)
你快到了!
要将东西变成for循环,你只需要注意模式。你看到每行中这个数字如何增加1:
System.out.printf("%.1f %n", x);
^
|
此数字从1增加到14。
每次增加一个还有什么? i
,从1增加到12.这不是我们想要的,因为我们希望i
从1增加到14,与print语句中的数字相匹配。因此,您需要将for循环更改为:
for (int i = 1; i < 15; i++) {
现在i
与print语句中的数字同步。我们可以用i
:
System.out.printf("%." + i + "f %n", x);
答案 1 :(得分:0)
这样做的一个棘手方法是:
for (int i = 1; i <= 14; i++) { // loop bounds to match your initial input 1 to 14
System.out.printf("%." + i +"f %n", x); // just made that value i to be replaced in the string, before printf actually formats
}
这样每次迭代都会转换为: -
从i=1
=> System.out.printf("%." + "1" +"f %n", x)
=> System.out.printf("%.1f %n", x)
然后是i = 2
=> System.out.printf("%." + "2" +"f %n", x)
=> System.out.printf("%.2f %n", x) ...and so on until i=14
答案 2 :(得分:0)
您可以为任何数字执行此操作:
AppDelegate
注意:public static void main(String[] args) // Method: main
{
double x = 3.14159265358979;
int len = (x+"").length()-1; //15
for (int i = 1; i < len ; i++) {
System.out.printf("%."+i+"f %n", x);
}
会将double转换为字符串。所以一切都将被视为一个角色(即使是(x+"").length();
)。在你的情况下,它将给出16作为输出。但是,您只有14个十进制值。