当前位置: 首页 > 知识库问答 >
问题:

质数上的奇怪错误

汤玉宸
2023-03-14

所以我在做这个素数家庭作业,举了一个很好的例子,我想我已经把大部分都记下来了。我遇到的一件事是“公共静态空隙筛(int n)”一行的错误,这也发生在“私有静态int twinPrime()”中

代码如下:

import java.util.*;

public class PrimeNumbers
{
public static void main (String [] args)
{
    Scanner in = new Scanner(System.in);
    
    System.out.print("Enter a value for n: ");
    int n = in.nextInt();
    in.nextLine(); // clear input buffer
    System.out.println();
    
    // Generate a list of prime numbers between 2 and n
    // to test Part 1
    ArrayList<Integer> primes = sieve(n);
    System.out.println("Prime numbers between 2 and " + n + ":\n");
    System.out.println(primes);
    System.out.println();
    
    // Test Part 2
    System.out.println("The twin primes less than " + n + " are:\n");
    twins(n);
    System.out.println();
}

// COMPLETE THIS METHOD FOR PART 1
public static ArrayList<Integer> sieve (int maxValue)
{
    public static void sieve (int n)
    {
        // 1 = assumed prime, 0 = known not prime
        // Create a list of numbers from 0-n
        ArrayList<Integer> sieve =
                         new ArrayList<Integer>(n+1);
        // Fill initial sieve with non-zeros (assumed prime)
        int index;
        
        for (index = 0; index <= n; index++)
        {
            sieve.add(index);
        }
        
        System.out.println("Starting sieve: " + sieve);
        
        // For each position/value >= 2, if it's 1,
        // cross off its later multiples (set them to 0)
        for (index = 2; index < sieve.size(); index++)
        {
            if (sieve.get(index) > 0)
            {
                System.out.println(index + " is prime");
                
                // Mark off multiples of index
                int mult = 2 * index; // first multiple
                for (; mult < (n+1); mult += index)
                {
                    // Increment by (index) each time
                    // set() takes position, new value
                    sieve.set(mult, 0); // mark off value
                }
                System.out.println(sieve);
            }
        }
        
        // Remove all non-prime values
        sieve.remove(0);
        sieve.remove(0);
        
        for (index = 0; index < sieve.size(); index++)
        {
            if (sieve.get(index) == 0)
            {
                sieve.remove(index);
                index--;
            }
        }
        
        System.out.println(sieve);
    
}}

// COMPLETE THIS METHOD FOR PART 2
public static void twins (int max)
{
    // ADD YOUR CODE HERE
}
}

以下是错误:

void是变量筛的无效类型

预期令牌 "(", ; 语法错误

令牌 “)” 上的语法错误, ;预期

标记“int”语法错误,应为@

语法错误,请插入“EnumBody”以完成BlockStatements

语法错误,插入“枚举标识符”以完成枚举标题名称

标记“int”语法错误,应为@

我只是从来没有见过这样的事情?我不知道从哪里开始寻找解释?如果有人能给我解释这些错误,我大概可以自己修复代码!

共有1个答案

彭烨烁
2023-03-14

您正在尝试在另一个方法中声明一个方法:

public static ArrayList<Integer> sieve (int maxValue)
{
    public static void sieve (int n)
    {

在Java,这是不允许的,因此出现了错误。

您需要确定它是两个声明中的哪一个,然后去掉另一个(不要忘记删除右花括号)。

 类似资料:
  • 问题内容: 我正在使用此代码: 但是在编译时出现此错误: 然后是堆栈跟踪的编译器错误。 我将在课堂开始时同时进行这两种导入: 有什么事吗 在Netbeans中,我看到自动完成选项并且Locale对象没有语法错误… 问题答案: 您的设置有些麻烦,下面的程序对我来说很好用。 它要求源代码的事实使我相信它正在尝试以某种调试模式进行编译或运行。您不需要编译java.util。*的源代码,这很奇怪。 看看我

  • 刚开始使用Ruby,我无法通过下面发布的错误。这是我的代码: 控制台中的错误: C: /Ruby23/lib/ruby/2.3.0/net/http。rb:933:inconnect来自C:/Ruby23/lib/ruby/2.3.0/net/http。rb:863:instart'来自C:/Ruby23/lib/ruby/2.3.0/net/http。rb:1398:inperform'来自C:

  • 问题内容: 我目前正在开发一个纯粹的HTML和JavaScript驱动的Web应用程序,该应用程序使用CORS来使用远程Web服务,但目前在IE 11发出GET请求时遇到了麻烦。有趣的是,我们在IE8 / 9/10中可以正常运行,而不仅仅是11。 问题是IE 11似乎超时,而不是等待服务器的响应。ajax调用很简单: 在“网络”选项卡中,使用Fiddler,我可以看到IE从不发送请求。 请问有人有

  • 我最近开始了我的第一个libGDX游戏,一切都进行得很好,所有的东西都呈现得很好,但是大约一分钟后什么都没有呈现,呈现调用仍然被发出,并且spritebatch工作得很好,我只是留下了一个黑屏,我甚至把'gl clearcolor()'改成了但我仍然留下了一个黑屏。我不知道这会是什么。 我的主要类: 编辑:我们已经确定,经过一段时间SpriteBatch渲染一个黑色屏幕的红色清晰颜色,它也停止渲染

  • 问题内容: 我正在实施一个非常简单的易感性感染恢复模型,该模型具有稳定的工作量,可以用于闲置的副项目- 通常是一项非常琐碎的任务。但是我遇到了使用PysCeS或SciPy的求解器错误,它们都使用lsoda作为其基础求解器。这仅在参数的特定值时发生,我为之困惑。我使用的代码如下: 这将产生以下错误: 通常,当我遇到这样的问题时,我设置的方程组最终有问题,但是我都看不到任何问题。奇怪的是,如果将mu更

  • 问题内容: 知道为什么我会收到这个例外吗? 问题答案: 我怀疑如果是接口(是吗?),您将不会遇到此错误。我相信您可能有一个正在使用cglib代理,执行魔术等操作的类,最后,它不能安全地转换为setter或构造函数中的参数。尝试对接口进行编程,看看错误是否消失。 更新 :不是接口。这是一个扩展的类。 鉴于此,我建议您尝试以下操作: 重命名为。 从已命名的接口中提取一个接口(例如“ ”) 浏览所有使用