5

このフォーラムで他のいくつかの質問が寄せられたように、数の約数を見つけるにはどうすればよいでしょうか。

注: 私は他の人が書いたものを理解しようとしました。すでに与えられた回答を焼き直さないでください

私のコードは今のところ機能しますが、たとえば、数値 6 の戻り値は次のとおりです。は 1.000 です

すべての小数を削除する方法はありますか? for文を考えてみたのですが、使い方がよくわかりません。

現在のコード:

public class Factoring {

public static void main(String[] args) {
    double input;
    double factor = 1;
    double factorNum;

    System.out.println("This application calculates every factor of a given number!"
            + "\nPlease enter a number: ");
    input = TextIO.getlnDouble();

    System.out.println("Original Number: " + input);

    while (input >= factor){
        factorNum = input / factor;

        System.out.print("\n" + input + " factored by " + factor + " is ");
        System.out.printf("%.3f", factorNum);
        factor++;
    }
}

}
4

5 に答える 5

6

intの代わりに を使用しdoubleます。小数 を使用doubleまたは取得する場合。float

だからあなたのこれ:

    double input;
    double factor = 1;
    double factorNum;  

次のようにする必要があります。

    int input;
    int factor = 1;
    int factorNum;  

SSCCE

public class Factoring {
    public static void main(String[] args) {
        int number = 15;
        int factorNumber = 1;

        while(factorNumber <= number){
            if(number % factorNumber == 0){
                System.out.println(factorNumber + " is a factor of " + number);
            }
            factorNumber ++;
        }
    }
}  

結果:

1 is a factor of 15
3 is a factor of 15
5 is a factor of 15
15 is a factor of 15  

説明

数学の授業と同じように、15 を 2 で割ることを考えてみてください。

15 = 2 * 7.5 + 0. あなたの商は: 7.5
プログラミングでは 7.5 と 7 は異なります。1 つは浮動小数点数で、もう1 つは整数または整数と呼ばれるものです。

浮動小数点数を格納するには、floatまたはdoubleデータ型が使用されます。小数点以下の数字を保持します。
一方、 intlongは整数用であるため、小数点以下の桁数は保持されません。それらは切り上げられません。彼らはそれを切り捨てます。

これを試して:

double withDecimals = 7.5d;
int withoutDecimals = 7.5d;

そしてそれらを印刷します。
違いを見ます ?

于 2013-10-22T01:28:50.230 に答える
0

係数による入力数 % がゼロに等しくない場合は、係数のリストから削除します。ここでは、「1.5」のような答え、技術的には入力数値の要因ではない答えについて話していると仮定しています。

于 2013-10-22T01:29:25.087 に答える
0

むしろ、数値に double を使用するほうが、integer に変更する方が適切です.integer は単数用で、double は 10 進数用です..

int input;
    int factor = 1;
    int factorNum;

から変更

System.out.printf("%.3f", factorNum);

System.out.printf("%.0f", factorNum);
于 2013-10-22T01:34:16.017 に答える
0

int を使用し、% を使用して剰余を確認します

int factor = 6;
int input = 1;

   while(input <= factor) {

       if(f % i == 0){

           System.out.println(i + " is a factor");

       }

   i++;

   }
于 2013-10-22T01:32:20.390 に答える