0

したがって、簡単に言うと、RandomGenerator を拡張して PRIME、POWER OF 2(2,4,8,16,32,64,128 など)、FIBONACCI AND SQUARE NUMBERS (1,4,9,16,25) をランダムに返すクラスを作成しました。 、36など)。次に、クラスを呼び出して、ユーザーがスペース (1,n) を定義している間に乱数を返す簡単なプログラムを作成しました。どちらのプログラムも問題なくコンパイルされます。私の問題は、プログラムを実行すると、各値に対して常に 0 が返されることです。私はJavaが初めてです。誰でも私を助けることができますか?

import acm.util.*;


public class RandomGeneratorImproved2 extends RandomGenerator
{

private int i,j,a,c,d,e,temp,n,Pnumber,Fnumber,number2,numbersq;

private long b;

boolean flag,flag2,flag3,flag4,flag5;

private double temp1;


public RandomGeneratorImproved2 (int n)
{
    this.n = n;
}

public void nextPrime(int n) // PRIME NUMBERS
{
        Pnumber = rgen.nextInt(1, n);
        i=2;
        flag2 = false;
        if ( Pnumber == 1 ) // Check for value 1 cause it cannot check it inside the loop
        {
            flag2=true;
        }
        while ( (i<n) && (flag2 == false) )  
        {
            flag = true;
            j=2;
            do 
            {
                a = i%j;
                if ( (a == 0) && (i != j) )
                {
                    flag = false;
                }
                if (i!=j-1)
                {
                    j = j+1;
                }

            } while ( j<i );
                if ((flag == true) && (Pnumber==i)) // 
                {
                    flag2 = true;
                } 
                if ((i==99) && (flag2==false)) // restart if the number is not prime
                {
                    i = 1;
                    Pnumber = rgen.nextInt(1, n);
                }
                i = i + 1;
        }
}

public int getPrime() //POWER OF 2 NUMBERS
{
    return Pnumber;
}

public void nextPowerof2(int n) 
{
        number2 = rgen.nextInt(1, n);
        i=1;
        b=2;
        flag3 = false;      
        while ( i<n ) // n <= 31
        {
            if (number2 == b)
                {
                    flag3 = true;
                }
            b = 2*b;
            if ((i == n-1) && (flag3==false))
            {
                i=1;
                number2 = rgen.nextInt(1,n);
                b=2;
            }
            i=i+1;
        }
}

public int getPowerof2()
{
    return number2;
}

public void nextFibonacciNumber(int n) // FIBONACCI NUMBERS
{
    Fnumber = rgen.nextInt(1, n);
    c=0;
    d=1;
    flag4 = false;
    i=1;
        while ( i<n && flag4==false ) 
        {
            temp = d;
            d = d + c;
            c = temp;
            i=i+1;
            if (Fnumber == d)
            {
                flag4 = true;
            }
            if ((flag4 == false) && (i==n))
            {
                i=1;
                c=0;
                d=1;
                Fnumber = rgen.nextInt(1, n);
            }
        }
}

public int getFibonacciNumber()
{
    return Fnumber;
}

public void setSquareNumber(int n) // SQUARE NUMBERS
{
    numbersq = rgen.nextInt(1, n);
    flag5 = false;
    i=1;
    temp1 = Math.sqrt(n);
    while ( i<temp1 && flag5 == false ) 
        {
            e = i*i;
            i = i + 1;
            if ( numbersq == e )
            {
                flag5 = true;
            }
            if ( i == 20 && flag5 == false )
            {
                i=1;
                numbersq = rgen.nextInt(1, n);
            }
        }
}

public int getSquareNumber()
{
    return numbersq;
}

public String toString()
{
    return "Your Prime number is : " + Pnumber + "\nYour Power of 2 number is : " + number2 + "\nYour Fibonacci number is : " + Fnumber + "\nYour square number is : " + numbersq;
}
  private RandomGenerator rgen = RandomGenerator.getInstance();

}

import acm.program.*;

public class caller2 extends Program
{
    public void run()
    {
        int n = readInt("Please give me an integer to define the space that i'll look for numbers : ");
        RandomGeneratorImproved2 r1 = new RandomGeneratorImproved2(n);
        println(r1);
    }
}
4

1 に答える 1