gpt4 book ai didi

Java:按输入字符串的标记读取标记

转载 作者:行者123 更新时间:2023-11-30 02:40:37 26 4
gpt4 key购买 nike

我使用 Scanner 类作为标准输入来从键盘读取输入。我会逐个标记地读取插入的字符串,直到行尾。 token 由空格分隔。

这是我的代码:

Scanner in = new Scanner(System.in);

int count=0;
while(in.hasNextLine()){
while(in.hasNext()){
String s=in.next();
System.out.println(s);
if(s.equals("\n"))
break;
count++;
}
break;
}
System.out.println(count);

问题是,当我按 Enter 时,它似乎将其视为一个空白,并且它永远不会从 while block 中退出,因此它继续等待另一个输入。

在 Linux 中退出 while 并结束程序的唯一方法是按 ctrl+D (=enter),但我正在寻找另一种方法...

我尝试插入一个 if 语句来检查 token 是否为“\n”,但它不起作用。

你能帮我找到问题的解决方案吗?

最佳答案

in.hasNextLine() 和 in.hasNext() 方法在与流一起使用时是阻塞方法:如果没有新行或新标记,它们将等到您写入内容并再次按 Enter 键。

如果您只想要一行,您可以使用类似以下内容的内容:

package test;

import java.util.Scanner;

public class Test {

public static void main(String[] args) {
int count=0;
Scanner in =new Scanner(System.console().readLine()); //scanning just one line
while(in.hasNext()){
String s=in.next();
System.out.println(s);
count++;
}
System.out.println(count);
in.close();
}

}

注意:如果从 IDE 执行此代码,则没有控制台,因此 System.console() 返回 null。为了从命令行运行它,您需要输入如下内容:

$ pwd
/home/user/development/workspace/test/bin
$ ls
test
$ ls test
Test.class
$ java -classpath /home/user/development/workspace/test/bin/ test.Test

关于Java:按输入字符串的标记读取标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41850237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com