Java 返回空字符串的素数循环 公共字符串素数() { //创建要返回的变量 字符串prime=“”; int num=0; for(int i=0;i

Java 返回空字符串的素数循环 公共字符串素数() { //创建要返回的变量 字符串prime=“”; int num=0; for(int i=0;i,java,for-loop,Java,For Loop,其目标是生成一个介于1和上限(私有变量限制)之间的素数列表。然而,当我运行代码时,我得到一条空白消息作为返回。这是为什么?我不太理解代码的逻辑,但是有助手方法是很好的 public String primeNumbers() { //create variable to be returned String prime = ""; int num = 0; for(int i = 0; i < this.limit; i++) {

其目标是生成一个介于1和上限(私有变量限制)之间的素数列表。然而,当我运行代码时,我得到一条空白消息作为返回。这是为什么?

我不太理解代码的逻辑,但是有助手方法是很好的

public String primeNumbers()
{
    //create variable to be returned
    String prime = "";
    int num = 0;

    for(int i = 0; i < this.limit; i++)
    {
        num = this.limit - i;
        for(int count = 2; count < this.limit; count++)
        {
            if ( num % count == 0)
            {
                count = this.limit + 1;

            }
            else if ( num == count)
            {
                prime += num + ", ";
            }

        }


    }


    return prime;
}
公共字符串素数()
{
//创建要返回的变量
字符串prime=“”;
for(int i=0;i如果(number昨天有一个关于这个的问题,我写这篇文章是为了给自己复习

public String primeNumbers()
{
    //create variable to be returned
    String prime = "";

    for(int i = 0; i < this.limit; i++)
    {
        if(this.isPrime(i)){
            prime += i + ", ";
        }
    }
    return prime;
}

private boolean isPrime(int number){
    if(number <= 1){
        return false;
    } else if(number == 2){
        return true;
    }
    for(int i = 2; i < number; i++){
        if(number%i == 0){
            return false;
        }
    }
    return true;
}
公共类Erasthotenes
{
私有整数范围;
私有布尔[]nums;
公共以太网(整数范围)
{
这个范围=范围;
nums=新布尔值[范围];
对于(int i=0;i

此.limit的值是多少?它是任何正数测试代码时的数字是多少?我打赌您没有设置它,因此它是0,因此您得到一个空白字符串。
 public class Erasthotenes
    {
        private int range;
        private boolean[] nums;

        public Erasthotenes(int range)
        {
            this.range = range;
            nums = new boolean[range];
            for(int i = 0; i < nums.length; ++i)
            {
                nums[i] = true;
            }
            nums[0] = nums[1] = false;
        }

        public void sieve()
        {
            int root = (int) Math.sqrt(range);
            for(int i = 2; i < root; ++i)
            {
                for(int j = i + 1; j < range; ++j)
                {
                    if(j % i == 0)
                    {
                        nums[j] = false;
                    }
                }
            }
        }

        public void printPrimes()
        {
            for(int i = 0; i < nums.length; ++i)
            {
                if(nums[i] == true)
                {
                    System.out.print(i + ", ");
                }
            }
        }
    }