【问题标题】:Issues with imports/library?进口/图书馆的问题?
【发布时间】:2014-10-29 18:33:32
【问题描述】:

我正在为班级做作业:

约瑟夫问题。在古代约瑟夫斯问题中,N 人处于水深火热之中,同意以下策略来减少人口。他们将自己排成一个圆圈(从 0 到 N???1 的位置)并绕着圆圈前进,消除第 M 个人,直到只剩下一个人。传说约瑟夫斯为了避免被淘汰而想出了坐在哪里。编写一个队列客户端 Josephus.java,它从命令行获取 M 和 N,并打印出人员被淘汰的顺序(从而显示 Josephus 在圆圈中的位置)。

我的代码如下:

package josephus; 
import java.util.Queue;

public class Josephus  { 

public static void main(String[] args)  {
    int n = Integer.parseInt(args[0]),
        m = Integer.parseInt(args[1]);

    Queue<Integer> q = new Queue<Integer>();
    for (int i = 0; i < n; i++)
        q.enqueue(new Integer(i));

    int k = 0;
    while (!q.isEmpty())
    {
        int x = q.dequeue();

        if (++k % m == 0)
            StdOut.print(x + " ");
        else
            q.enqueue(x);
    }
    StdOut.println();
} } 

当我在 NetBeans 中运行它时,它给我的错误是:

队列是抽象的;无法实例化

入队:找不到符号

出队:找不到符号

StdOut:找不到符号

我认为通过导入 java.util.Queue 将使队列工作,对于 StdOut,我确实下载了一个 stdlib.jar 以添加到包含 StdOut 的项目库中,我认为这会工作。

如果我的代码有问题或我需要做任何其他事情,我将非常感谢您的帮助。此外,作为参考并查看我从哪里获得 stdlib.jar,这里是教科书网站的链接,该链接来自该问题的来源:http://algs4.cs.princeton.edu/13stacks/(约瑟夫斯问题在“创意问题部分”下的 #37 接近尾声.

【问题讨论】:

标签: java jar queue stdout josephus


【解决方案1】:

Queue 是一个接口,不能在 Java 中直接实例化。必须提供具体的实现类,如ArrayDeque。

Queue<Integer> q = new ArrayDeque<Integer>();

队列方法enqueue 和dequeue 的命名不同——分别为offer 和poll。例如:

q.offer(i);

和

int x = q.poll();

StdOut 不是 Java 中的类;使用System.out,例如:

System.out.print(x + " ");

【讨论】:

  • 谢谢@rgettman。我试过你的建议,结果成功了!
猜你喜欢
  • 2011-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多