如何将此程序转换为for循环?

时间:2017-09-29 05:31:54

标签: java for-loop printf

大家好,所以我正在尝试制作一个可以打印的程序:

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

请帮助!!!!

3 个答案:

答案 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

替换print语句中的数字
    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个十进制值。