1

特定の数値の階乗を計算するために、次のコードを思いつきました。

import java.lang.*;

import java.math.*;

import java.io.*;

import java.util.*;

@SuppressWarnings("unused")
class factorial_1{

public static void main(String args[]) throws IOException

{

System.out.println("enter a number: ");

String strPhone = "";  
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

strPhone = br.readLine();

BigInteger number = new BigInteger (strPhone);

BigInteger fact = new BigInteger("1");

BigInteger i = new BigInteger("1");

BigInteger step = new BigInteger("1");

final long start = System.currentTimeMillis();

final long durationInMilliseconds = System.currentTimeMillis()-start;

for ( ; i.compareTo(number) <= 0; i=i.add(step)){

    fact = fact.multiply(i);

}

System.out.println("execute Long-Running Task took " + durationInMilliseconds + "ms.");

System.out.println("the factorial of "+ number +" is "+ fact);

}

}

コードを実行すると、キーボードから数値が読み取られ、その階乗が出力されます。

コードを .jar ファイルとしてエクスポートし、端末から入力として番号 (10) を指定しようとしました

私はこの投稿がコマンドライン引数でjarを実行する方法と言うようにしましたが、番号をもう一度入力するまで何も起こりませんでした

- - - - - -ターミナル - - - - - -

roditis@NiSLab-pc2:~/Desktop$ java -jar import_number.jar 10

数字を入力してください:

10

長時間実行タスクの実行には 0 ミリ秒かかりました。

10 の階乗は 3628800 です

- - - - - -ターミナル - - - - - -

私はLinux /プログラミングが初めてで、あなたの助けを本当に楽しみにしています

前もって感謝します

ロディティス

4

1 に答える 1

1

次のように値を引用符で囲んでみてくださいroditis@NiSLab-pc2:~/Desktop$ java -jar import_number.jar "10"

メイン関数が so のような String オブジェクトの配列を取ることを思い出してくださいpublic static void main(String[] args)

編集

申し訳ありませんが、args[]パラメータをまったく読み取っていないようです。"10"プログラムに引数として指定するとargs[0]、その値が含まれます。if(args.length >= 1)にアクセスする前に、ケースを確認してくださいargs

于 2012-07-08T02:54:39.073 に答える