2017-12-05 20 views
2

私は初心者のJavaプログラマです。基本的なYouTubeのビデオやオーバーフローフォーラムを勉強しています。私はforループプログラムそして私は自分自身をテストするためにそれを試してみる必要があると思った各ブランクJavaのforループで数式を使うにはどうすればいいですか?

Number Square Cube (n+1)/(2n-18) 
______________________________________ 
1   #  #   # 
2   #  #   # 
3   #  #   # 
4   #  #   # 
5   #  #   # 

この表をプリントアウトと同様にご記入ください。私は、テーブルのNumber、Square、Cubeの部分について完璧に動作する以下のプログラムを思いついたが、与えられた数式を使って数値を生成する方法を理解していない。変数として初期化された式(double)は実際の結果を出力しません。正直なところ、何をすべきかについての手掛かりはありません。私はむしろ、複雑なものよりも簡単な説明と、複雑なものではなくコードの単純な変更を望みます。私が言ったように、私は初心者です、そして、多くの異なった方法が私の頭の上に正しく行くかもしれません。また、事前にありがとうございます(余分な作業では、各列の合計を印刷するように求めています。私はその方法を知らず、可能であれば説明をしたいと思いますが、 「がt)は1を受け取る

int number; 
int maxValue; 

Scanner keyboard = new Scanner(System.in); 
System.out.println("how many numbers do you want the max value to be"); 
maxValue = keyboard.nextInt(); 

System.out.println("Number\tSquare\tCube (n+1)/(2n-18)"); 
System.out.println("--------------------------------"); 
for (number = 1; number <= maxValue; number++) { 
    double formula = (number + 1)/(number * 2); 
    System.out.println(
     number + "\t\t\t" + number * number + "\t\t\t" + 
     number * number * number + "\t\t\t" + formula); 
} 
+0

あなたは、「式(...)は、実際の結果を印刷しない」とはどういう意味ですか?実際の出力は何ですか?また、何を期待していましたか?初心者の方は 'number'を引数として受け取り、' double'を返す 'private'メソッド(' calculateFormula'のようなもの)を作成してみてください。 – aribeiro

答えて

2

あなたの数式は教科書と一致しません。これを試してみてください:

System.out.println("Number\tSquare\tCube (n+1)/(2n-18)"); 
System.out.println("--------------------------------"); 

for (int number=1; number <= maxValue; number++) { 
    double square = Math.pow(number, 2); 
    double cube = Math.pow(number, 3); 
    double formula = (number + 1)/(number * 2 - 18); 
    System.out.println(number + "\t\t\t" + square + "\t\t\t" + cube + "\t\t\t" + formula); 
} 

注:@MauricePerryによって指摘されているように、9の入力は0で除算します。このチェックされていない例外をキャッチしようとするのではなく、入力値を制御してこれが起こらないようにする必要があります。

+0

例外番号== 9の場合 –

3

あなたの式は次のようになります。-18

  • を逃す

    • /は整数の除算を行っている。

      double formula = (double)(number + 1)/(number * 2 - 18); 
      

      2つの問題少なくとも1つのオペランドをダブルにキャストしない限り、

    ああ!もう1つのこと:数字== 9のとき、ゼロによる除算があります。二重除算は "無限大"を返しますが、整数除算は例外をスローします。

  • 1

    数式が正しくなく、欠落している数が少ないです。

    int number; 
        int maxValue; 
    
        Scanner keyboard = new Scanner(System.in); 
        System.out.println("how many numbers do you want the max value to be"); 
        maxValue = keyboard.nextInt(); 
    
        System.out.println("Number\t\tSquare\t\tCube \t\t(n+1)/(2n-18)"); 
        System.out.println("-------------------------------------------------------"); 
        for (number = 1; number <= maxValue; number++) { 
         double formula = (number + 1)/(number * 2 - 18); 
         System.out 
           .println(number + "\t\t" + number * number + "\t\t" + number * number * number + "\t\t" + formula); 
    
        } 
    
    +2

    例外番号== 9 –

    +1

    はい、それを処理する必要があります。何がそこに印刷されるべきかははっきりしない。 – vinS

    1

    私はあなたが取得している出力わからないんだけど、(N + 1)/(2N-18)の結果を取得しようとしたとき、あなたがinteger divisionを使用している私には思えます。

    は、使用してみてください:

    double decimalNumber = (double) number; 
    double formula = (decimalNumber + 1)/(decimalNumber * 2 - 18); 
    
    関連する問題