2011-02-04 10 views
0

すべての情報をfor文が出力する出力として返したいと思います。例えばstatement printsの値を返す

:私はどこか他のメソッドを呼び出すとき

public static int countNumbers(int x) { 

    for (int i = 1; i <= x; i++) { 
     System.out.println(i); 
    } 

    return SOMETHING; // This something should be the values for statements prints. 
         // For example, countNumbers(5) returns 12345. 
} 

だから、私は出力が得られます。

ので:

int output = countNumbers(3); 
//output = 123; 

はどのようにこれを行うことができますか?

答えて

5

StringBuilderを使用して結果を累積します。 更新:次にInteger.parseIntを使ってint型に変換します

public static int countNumbers(int i) { 
    StringBuilder buf = new StringBuilder(); 

    for (int i=1; i<=5; i++) { 
     buf.append(i); 
    } 
    return Integer.parseInt(buf.toString()); 
} 

これが唯一の(9まで)iのかなり小さい値のために働くことに注意してください、そうでなければ、整数オーバーフローを取得します。これについて

public static int countNumbers(int x) { 

    int retVal = 0; 

    for (int i = 1; i <= x; i++) { 
     System.out.println(i); 
     retVal += i * Math.pow(10, x - i); // Is it math? I'm a C++ programmer 
    } 

    return retVal; 

} 
+0

は、返信いただきありがとうございますが、私の出力はint型である必要があります。この例では、出力をStringとして示しています。私はキャストする必要がありますか? – Dave

+0

@Dave [Integer.parseInt](http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Integer.html#parseInt(java.lang.String)を使用してPéterの結果を変換できます。 )) –

+0

@Dave、私の更新を参照してください。 @Zach、私の最初の提案は 'valueOf'でしたが、' parseInt'は本当に良いです、ありがとう:-) –

1

どう

public static int countNumbers(int x) { 
    int result = 0; 
    for (int i = 1; i <= x; i++) { 
     result *= 10; 
     result += i; 
    } 
    return result; 
} 
+0

ええ、それは数学ですが、うまくいきません。 – Dave

+0

@Dave Uhhh ...どうしてですか? –

1

方法:これについて

+0

+1ああ、これは私が以前掲載した答えよりはるかに最適化されています! –