首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java从用户获取字符串输入,NoSuchElementException:找不到行

Java从用户获取字符串输入,NoSuchElementException:找不到行
EN

Stack Overflow用户
提问于 2019-06-23 23:53:23
回答 2查看 0关注 0票数 0

我正在使用以下代码(我希望),它工作正常,我正在采取多个输入,名称,地址等。我也使用它cin()来按任何关键功能。它以某种方式被打破并按照预期停止工作。

public class A {
    Scanner s = new Scanner(System.in);

    public String cin() {
        return s.nextLine();
    }
}

抛出的错误如下

Exception in thread "main" java.util.NoSuchElementException: No line found
    at java.util.Scanner.nextLine(Scanner.java:1540)

我试着用s.hasNext()s.hasNextLine(),它没有进入状态,因此没有输入来自用户的拍摄。

我知道这是非常基本的,我即将完成我的工作,这个突然的问题让我归零。我也尝试了循环方式但是陷入了无限循环。

是否可以在没有 exception没有输入的情况下输入skipping,我想要一条忽略以前的东西并强行从用户那里获取输入的行?

请注意我cin()在需要输入的整个应用程序中使用(并且它正在工作)。

可能性:

  1. 是否可能是因为屏幕上印有任何字符?
  2. 也许System.in被任何其他类或lib使用???

很奇怪cin()在写这行之前找到了另外一个地方

try(Scanner scanner = new Scanner(System.in)) {
}

我从试用口袋中删除它,现在它再次正常工作,为什么会发生这种情况(请注意这是在另一个类中完成的,并采用整数输入,这是正常工作)。

EN

Stack Overflow用户

发布于 2019-06-24 09:39:37

你需要使用hasNextLine()

就像是:

public String cin() {
    return s.hasNextLine() ? s.nextLine() : null;
}

要么

public Optional<String> cin() {
    return s.hasNextLine() ? Optional.of(s.nextLine()) : Optional.empty();
}

您尝试使用hasNext(),但可能会true在输入行之前返回。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档