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

Java多扫描器

申奇希
2023-03-14

我有一个类,它创建多个Integer对象,并将它们放入LinkedList中,如下所示:

public class Shares<E> implements Queue<E> {
    protected LinkedList<E> L;

    public Shares() {
        L = new LinkedList<E>();
    }

    public boolean add(E price) {
        System.out.println("How many of these shares would you like?");
        Scanner scanInt;
        scanInt = new Scanner(System.in);
        Integer noShares = scanInt.nextInt();
        for (int i = 0; i < noShares; i++) {
            L.addLast(price);
        }
        scanInt.close();

        return true;
    }
}

我有一个应用程序,它从控制台扫描输入“add”,如果找到,就调用add方法,如下所示:

public class Application {
    private static Scanner scan;

    public static <E> void main(String[] args) {
        Queue<Integer> S = new Shares<Integer>();
        scan = new Scanner(System.in);
        System.out.println("Please type add");
        String sentence = scan.nextLine();
        while (sentence.equals("quit") == false) {
            if (sentence.equals("add")) {

                System.out
                    .println("What price would you like to buy your shares at?");

                S.add((Integer) scan.nextInt());

            } else
                System.exit(0);

            sentence = scan.nextLine();
        }
    }
}

应用程序应该允许用户输入“add”,但在调用add方法后,将出现错误“no line found”。

我猜这是因为方法中的扫描程序没有关闭,然后在需要时重新打开。这是程序的问题吗?如果是,我该如何修复它?

请注意,这个程序还没有完成,因为我将添加一个出售这些股票的销售方法。这就是我使用while循环的原因。

共有1个答案

西门良才
2023-03-14

对任何流都有多个包装器是一个很好的方法来真正混淆你自己。我建议您只包装一次流,除非您真正知道自己在做什么。

最简单的方法是在这种情况下使用一个单例来包装另一个单例(最好是在扫描器中传递一个参数)

public class Application { 
    // use this Scanner in all you other code, don't create another one.
    static final Scanner scan = new Scanner(System.in);

    public static <E> void main(String[] args) {

我猜这是因为方法中的扫描器尚未关闭

顺便说一句,不要在没有解释的情况下退出程序。调用system.exit(0);甚至没有错误消息也是一场噩梦。我曾经在一个项目中工作过,该项目对System.exit()有260次调用,通常没有错误消息,您可以想象诊断一个服务器无缘无故地停止是多么有趣。

 类似资料:
  • 问题内容: 我有一个创建多个对象并将其放入一个类的类,如下所示: 我有一个从控制台扫描输入“ add”的应用程序,如果找到该应用程序,则调用如下所示的方法: 该应用程序应允许用户根据需要多次输入“添加”,但是在add调用该方法后将出现错误“找不到行” 。 我猜这是因为方法中的尚未关闭,然后在需要时重新打开。这是程序的问题吗?如果是,我将如何修复它? 请注意,该程序尚未完成,因为我将添加一种出售这些

  • 问题内容: 据我所知,在Java中从文件读取基于字符的数据的两种最常见的方法是使用或。我也知道通过使用缓冲区来避免物理磁盘操作来有效地读取文件。我的问题是: 是否执行以及? 为什么你会选择在反之亦然? 问题答案: 用于从流的内容中解析令牌,而只是读取流,并且不执行任何特殊的解析。 实际上,你可以将传递给作为要解析的字符源。

  • 我正在运行以下版本的声纳扫描: 蚂蚁v3。0.5 声纳v4。5.4 声纳蚂蚁任务v2。三, 我的ant项目包含100个子模块;其中大约一半有外部库,一半没有 在我的ant构建文件中,设置了以下声纳属性: 上面提到的最初问题是,对于没有外部lib的模块,它会失败,因为编译后/build/dependency中没有jar。 根据这个存档链接:http://sonarqube-archive.15.x6

  • 问题内容: 如何将扫描仪的定界符设置为;或换行? 我试过: 但这不起作用。 问题答案: 通常,在模式中,您需要将翻倍。 所以,尝试 要么 编辑 :如果是问题,则可能要尝试以下操作: 它匹配的一个或多个,和。 注意 :我还没有尝试过这些。

  • 问题内容: 我正在尝试读取具有多个单词的字符串,即。洛杉矶或纽约市。如果有两个词并将它们分割在变量之间,则使用scanner.next()进行“出发”和“到达”只会读取第一个。nextLine()也不是很幸运。这是我的代码: 我知道这很简单,但我还没有弄清楚。 这是上面的代码的输入/输出: 输入航班号:29 输入出发城市:(立即跳至下一行) 输入到达城市: -—我真正想要的是---- 输入航班号:

  • Multi Threaded TCP Port Scanner 可让你扫描某个IP地址的所有TCP端口,可指定要扫描的线程数以及超时时间设置。可用于扫描某台机器打开了什么端口。