gpt4 book ai didi

java - 为 InputStreamReader 定义此行为的规范在哪里?

转载 作者:行者123 更新时间:2023-11-29 03:39:06 24 4
gpt4 key购买 nike

考虑下面的练习题代码,规范在哪里粗略地说:“调用 readTokens() 时,等待用户按回车键,然后继续执行。”

我不完全理解为什么我的代码可以工作,为什么程序在显示“输入数据:”后暂停并等待回车?此行为在哪里定义以及如何更改?

import java.io.*;
import java.util.LinkedList;

public class StreamTokeTwo {

private int ttype = 0;
StreamTokenizer tokenizer = new StreamTokenizer(new BufferedReader(
new InputStreamReader(System.in)));

private void setupTokenizer() {
tokenizer.resetSyntax();
tokenizer.wordChars(33, 126);
tokenizer.whitespaceChars(0, 32);
tokenizer.whitespaceChars(44,44);
tokenizer.whitespaceChars(47,47);
tokenizer.eolIsSignificant(true);
}

private String[] readTokens() {
LinkedList<String> list = new LinkedList<String>();
String[] array = null;

do {
try {
ttype = tokenizer.nextToken();
} catch (Exception e) {
System.exit(1);
}
if (ttype == StreamTokenizer.TT_WORD) {
list.add(tokenizer.sval);
}
} while (ttype != StreamTokenizer.TT_EOL);

array = list.toArray(new String[0]);
return array;
}

public static void main(String[] args) {
StreamTokeTwo streamToke = new StreamTokeTwo();
streamToke.setupTokenizer();

for (int i = 0; i < 5; ++i) {
System.out.print("Enter data: ");
String[] array = streamToke.readTokens();
for (String str : array) {
System.out.print(str + " ");
}
System.out.println();
}
}
}

最佳答案

等待输入行为是操作系统和 shell 的一个特性。它们将您的输入转换为 JVM 的标准输入,并决定什么构成文件结尾以及什么使数据可传递给正在读取其标准输入的程序。

就 JVM 而言,它只是从标准输入请求数据,如果没有可用数据且不在文件末尾,就会以一种方式阻塞。如果标准输入是一个磁盘文件,它也会做同样的事情。

关于java - 为 InputStreamReader 定义此行为的规范在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14012818/

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