为啥我的光标在 NextLine() 之后出现在错误的行上?

Posted

技术标签:

【中文标题】为啥我的光标在 NextLine() 之后出现在错误的行上?【英文标题】:Why is my cursor on the wrong line after NextLine()?为什么我的光标在 NextLine() 之后出现在错误的行上? 【发布时间】:2019-10-22 09:40:54 【问题描述】:
public static void main(String[] args)
 
    String word; 
    System.out.println ("Please type hello");
    Scanner scanner = new Scanner(System.in); 
    word = scanner.nextLine();
    System.out.println ("Okay");    

我的 nextLine() 方法有一个问题,当我在键盘上键入一个单词时,我希望键盘的光标位于“Okay”的下一行。 但是,它与“Okay”在同一行。

您能否告诉我如何将光标移动到下一行,因为我已经在此操作了 2 小时但找不到任何解决方案?

提前致谢。

我试图找到这个问题的解决方案,但它们都与 nextInt() 相关,我没有在这段代码中使用它。 我也尝试使用“\n”,但没有解决任何问题。

【问题讨论】:

@Arnaud,也试过了,但光标仍然在“Okay”上 关键字的光标?您必须从输入中读取其他值吗?您能否描述一下您的问题,如果可能的话,请附上您想要的截图 【参考方案1】:

我怀疑您正在使用 IDE(Eclipse 或其他东西)中的模拟控制台来测试运行您的程序,对吗?这是怎么回事?

简单的答案是:这不像真正的终端。尽管即使光标位于“错误”行并且输入文本将出现在“正确”行中,您也可以只键入,但它不会产生正确终端的完美错觉。

将您的程序导出到可运行的.jar 文件并在您的系统终端/控制台上使用java -jar yourProgramName.jar 运行它,您会很高兴的!

【讨论】:

非常感谢。它实际上解决了我的问题:) 很高兴能帮上忙。这也是一个令人振奋的答案;)这意味着您的程序实际上完全按预期运行,您只需在“即兴”环境中运行它。【参考方案2】:

你错过了System.out.println吗?

public static void main(String[] args)
 
    String word; 
    System.out.println ("Please type hello");
    Scanner scanner = new Scanner(System.in); 
    word = scanner.nextLine();
    System.out.println (word); // << missed line
    System.out.println ("Okay");    

【讨论】:

我不认为这是问题所在。已经是System.out.println("Okay");。问题是在 Eclipse 控制台(可能还有其他 IDE 控制台)中,光标位置的处理方式与实际命令行不同。

以上是关于为啥我的光标在 NextLine() 之后出现在错误的行上?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 sc.next() 或 sc.nextLine() 在循环中不起作用?

为啥在使用带有 next() 和 nextLine() 的 Scanner 读取 2 个看似相同的字符串时得到 equals() == false?

JavaScanner类nextInt后使用nextLine无法读取输入

nextLine() 在 next() 方法之后不起作用

为啥我的单元测试因错误“str”对象没有属性“光标”而失败?

Chrome在拖动时将光标设置为文本,为啥?