アプリ版:「スタンプのみでお礼する」機能のリリースについて

次のプログラムで分からないところがあります。
教えてください。

[プログラムの説明]
・キーボードから入力した整数の約数(1と自分自身を除く)と約数の個数を求めて画面に表示する。
・mainメソッドで、最大100個の約数を格納する配列divを用意する。整数をinNumに入力し、クラスDivisorのメソッドfindDivisorにdivとinNumを引き渡す。
・メソッドfindDivisorでは、引き渡された整数のすべての約数(1と自分自身を除く)を求め、配列divに格納する。約数の数は、最大100個と仮定する。戻り値として、約数の個数を返す。
・mainメソッドで、findDivisorの戻り値である約数の個数と、格納されたすべての約数を画面に表示する。

[プログラム]
import java.io.*;

class Divisor{
int findDivisor(int x, int div[])} //約数を配列に格納し、約数の個数を返す
   int i, n = 0;

for(i =2; < x+ i++) // (1)
     if(x (2) i == 0){
div[(3)] =i;
n++;
}
}
}

class RepEx4{
pablic static void main(String[] args) throws IOException{
int inMum, count, i;
int [] div = neww int [100];
String s;
Divisor check;

BufferedReader br = new BufferedReader(new
InputStreamReader(System.in)); //入力の準備

System.out.print("input int:");
s = br.readLine(); //文字列の入力
  inNum = Integer.parseInt(s); //文字列を数値に変換
check = new (4)();
  count = check.findDivisor(inNum, div);
if (count == (5))System.out.printLn("Divisor is not found);
else {
System.out.printLn("Number of divisor is " + count);
System.out.print("divisor = ");
for(i = 0; i (6)count; i++) System.out.print(div[i]+ "");
}
}
}

・プログラムあってますか?
だぶん(2)~(6)は語句が足りてないと思うのですが、何が入るのでしょうか?
また(1)のクラスDivisorのメソッドfindDivisor中のfor文
for(i = 2; i < x; i++)
を例えば
for(i =1; i <= x; i++)
に置き換えると、プログラムはどうなっちゃいますか?

・キーボード入力を24としたときの実行結果(出力画面)が下記のようになったのですが、足りない語句はなんですか?
[実行結果]
input int :24
Number of dibisor is ??????
divisor = ??????

初心者なのでつまずいてます、どうかよろしくお願いします。  
 
   

A 回答 (2件)

コーディングの一例です。


綴間違いと思われる箇所が数箇所ありましたので、修正してあります。
質問をする際は、よく確認してから質問しましょう。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

class Divisor{
int findDivisor(int x, int div[]) //約数を配列に格納し、約数の個数を返す
{
int i, n = 0;
/*
ある数xについて、最小の約数は2以上、最大の約数はx/2以下です。
よって、割る数iの範囲は2 <= i <= x/2 で十分です。
*/
for(i =2; i <= x/2 ; i++)
{
if(x % i == 0)
{
div[n] =i; // 約数を配列に格納
n++; // カウントをインクリメント
}
}
return n; // 約数の個数を返す
}
}

class RepEx4{
public static void main(String[] args) throws IOException{
int inNum, count, i;
int [] div = new int [100];
String s;
Divisor check;

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //入力の準備
System.out.print("input int:");
s = br.readLine(); //文字列の入力
inNum = Integer.parseInt(s); //文字列を数値に変換
check = new Divisor(); // インスタンスの生成
count = check.findDivisor(inNum, div);
if (count == 0)System.out.println("Divisor is not found"); // 約数が無い場合なので、countはゼロ
else {
System.out.println("Number of divisor is " + count);
System.out.print("divisor = ");
for(i = 0 ; i < count ; i++) // 約数の個数と同じ回数、ループを回す
{
System.out.print(div[i]+ " ");
}
System.out.println();
}
}
}
    • good
    • 0

補足要求です。


あなたの過去の質問に対して回答を寄せた方たちと同じなのですが,
不十分ながらも初心者のあなたが分かっている部分を書いていただけませんか。
http://okwave.jp/qa2870040.html
http://okwave.jp/qa2741133.html
http://okwave.jp/qa3299105.html
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!