【问题标题】:variable cannot be resolved to variable inside loop变量无法解析为循环内的变量
【发布时间】:2018-06-24 20:32:23
【问题描述】:

我编写了以下 Java 试图找到小于 1000 的素数:

public class primes {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("2"); 
        int n=2;
        While (n<1000);
        {
            for(int d = 2; d<n; d++); //if d|n abort divisors loop and try next number
            {

                if (n%d == 0){ //if d|n try next number
                    n++;
                    break;
                }

                if (d>(n/2)){ //if there are no divisors up to n/2 n is prime, print n then try next number
                    System.out.println(n);
                    n++;
                    break;
                }
                d++; //try next divisor

            }           
        }
    }
    private static void While(boolean b) {
        // TODO Auto-generated method stub  
    }
}

每次在内部循环中调用 d 时,我都会遇到错误,因为它没有被声明为变量。但是我在 for 语句中声明了。我已经阅读了几个可以执行此操作的示例。这里出了什么问题,如何解决?

【问题讨论】:

  • 你的内部循环永远不会被执行,因为 d
  • 循环为空for(...) /*nothing here */ ; - 删除末尾的分号。 while while(..) ; 也是如此,如果它是一个有效的 while
  • 男孩们,你在开始时跳过了无限循环 while (n
  • 你有严重的语法问题。我建议您从一开始就开始学习 Java。 在 while/for 循环头之后放置分号,并且声明了一个空的 While 方法,而不是使用 while 循环。
  • @Peter1982 你错过了问题中While 的大写W [:-)

标签: java declare


【解决方案1】:

这是您更正的代码(包含在 main(String[] args) 中,而不是在类中):

public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("2"); 
    int n=2;
    while (n<1000)
    {
        for(int d = 2; d<n; d++) //if d|n abort divisors loop and try next number
        {

            if (n%d == 0){ //if d|n try next number
                break;
            }

            if (d>(n/2)){ 
                //if there are no divisors up to n/2 n is prime, print n
                //then try next number
                System.out.println(n);
                n++;
                break;
            }

        }  
        n++;
    }
}

但是,您需要学习(或重新学习)该语言。在 while 和 for 循环之后,你用分号把我难倒了几分钟。我还发现了更多代码错误。我相信你可以很好地编码,但你需要先学习 Java 的基础知识。

【讨论】:

  • 感谢您的反馈,这真的很有帮助。你是对的,我生锈了。我已经有大约四年没有写过 Java 程序了。
猜你喜欢
  • 1970-01-01
  • 2014-09-01
  • 2015-05-22
  • 1970-01-01
  • 2011-11-27
  • 2012-04-14
  • 1970-01-01
  • 2021-11-20
相关资源
最近更新 更多