2017-09-29 3 views
-4

こんにちはすべて私は、この1と同じように印刷するプログラムを作成しようとしています:このプログラムをforループにするにはどうしたらいいですか?

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 

これまでのところ、これは私がこれをしなければならないものですただ

あり、このためにどのような印刷物

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); 
    } 
    } 
} 

:ループとprintfのために使用して、私は少し迷ってしまいました仕事

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

ようこそスタックオーバーフロー!どのようにサイトが動作しているのか、ここでどのような質問が話題になっているのかを知るには[ツアーに参加してください](http://stackoverflow.com/tour)してください。 「なぜ誰かが私を助けることができますか?」実際の質問ではありませんか?](http://meta.stackoverflow.com/q/284236) –

答えて

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 = 2

、次いで i=1

=> System.out.printf("%." + "1" +"f %n", x) 
=> System.out.printf("%.1f %n", x) 

から始まる

=> System.out.printf("%." + "2" +"f %n", x) 
=> System.out.printf("%.2f %n", x) ...and so on until i=14 
1

あなたはほぼそこにいます!

forループを使用するには、パターンに気づくだけです。あなたは、この数は1ずつ増加する方法各行の参照:

System.out.printf("%.1f %n", x); 
        ^
        | 

この番号は、1から14まで増加

1ずつ増加他に何が? iが1から12に増加します。iを1から14に増やして、printステートメントの数値と一致させたいからです。そのため、あなたはこれにループのためにあなたを変更する必要があります。

for (int i = 1; i < 15; i++) { 

iはprint文で数値と同期しています。私たちは、iでprint文で数値を置き換えることができます。

System.out.printf("%." + i + "f %n", x); 
0

あなたは、任意の数のためにそれを行うことができます。

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); 
} 

(x+"").length();は、文字列として、二重に変換されます。だから、すべてがキャラクター(たとえば.)とみなされます。あなたの場合、出力として16を与えます。しかし、小数点以下14桁しか持っていません。

関連する問題