问题标签 [system.in]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
731 浏览

java - 清除扫描仪(英寸)

在我的代码中,我有一个很长的顺序操作循环。我创建了一个线程来手动停止这个循环。基本上

并且线程基本上在标准输入上等待停止字符

问题是,如果循环正常退出,线程被锁在scanner.next上,所以下一个输入在仍然死的线程中丢失。如何从主类释放scanner.next?我已经尝试使用 scan.close() 但不起作用...

还有另一种停止循环的方法,而不杀死应用程序?我尝试使用 keyListener,但我有一个空指针

0 投票
1 回答
79 浏览

java.util.scanner - 在由关闭的流初始化的 Scanner 上调用 next() 不会引发 IllegalStateException

Scanner 文档说,当调用一个封闭的流时,next()可能会抛出这两个异常:

NoSuchElementException - 如果没有更多令牌可用

IllegalStateException - 如果此扫描仪已关闭

此外hasNext()可能会抛出此异常:

IllegalStateException - 如果此扫描仪已关闭

现在让我们假设我们有这个代码:

word1这将按预期打印。如果我们取消注释sc.close(); sc = new Scanner(fis);NoSuchElementException将在何时sc.next()执行时抛出。

这种行为对我来说似乎很奇怪。不应该在关闭时hasNext()抛出next()一个?请解释为什么会这样。IllegalStateExceptionInputStream

0 投票
3 回答
88 浏览

java - 试图了解我的循环出错的地方

所以这是我的任务:

一个包裹的邮政公司对第一磅或其一小部分收取 15 美元,对于超过一磅的任何东西收取每磅 10 美元。编写一个打印包裹费用的程序。

变量:

重量

第一次执行:

重量?-12 权重必须是正数。

第二次执行:

重量?0 权重必须为正数。

第三次执行:

重量?2 支付:25.00 美元

第四次执行:

重量?2.8 支付:33.00 美元

第五次执行:

重量?2.07 支付:25.70 美元

这是我到目前为止开发的代码:

一切正常,但我不明白为什么(特别是在第四次和第五次执行中)最终输出总是 0.10 美分。谁能帮我达到我需要的准确性?

0 投票
1 回答
229 浏览

java - java中用户的基本阅读输入

我想读取一个字符并将其存储到char[]数组中,这是我的方法称为getaline

和我的fgetc方法:

这个方法应该从输入流中返回一个字符。

但是我在编译时不断收到一条错误消息:

错误:可能的精度损失

我应该在里面放什么fgetc以便我可以收集用户的输入?

0 投票
2 回答
318 浏览

java - eclipse junit system.in java

我正在尝试在调用使用扫描仪和 System.in 的用户输入的方法上创建一个 junit 测试。

正在测试的方法如下所示:

目前,我在 jUnit 中使用以下设置:

操作数 1 和操作数 2 是用户添加并输入答案的随机生成的数字。

我遇到的问题是 System.setIn 没有从 jUnit 类传递到正在测试的类。

帮助?

0 投票
4 回答
936 浏览

java - 在没有主线程的情况下保持控制台输入处于活动状态?(爪哇)

我正在用 Java 编写一个服务器,它是多线程的。我构建了三个主要的活动线程,并从我的main方法开始:

例如,我的命令线程用于通过在控制台窗口中输入“q”来停止服务器。commandsrun 方法定义如下:

*其中扫描定义为:Scanner scan = new Scanner(System.in);

当我运行我的服务器时,我的所有线程都工作,除了命令线程,因为控制台不接受输入。

然后我意识到,如果我等待我的服务器线程(这是我最关心的线程)加入我的(静态方法)线程,我的命令线程就会工作。如果我将主要方法代码更改为以下内容,则意味着控制台接受输入:

现在我的问题。为什么控制台输入仅在线程仍处于活动状态时才有效?老实说,我不再需要我的线程,所以让它终止就可以了。

只是在没有名称的情况下定义了我的线程,我在这里做错了什么吗?我能够很好地终止每个线程,因为它们相互交织,并且除了我的命令线程之外一切正常。

编辑: 我非常感谢有关解决此问题的所有答案,但我真正追求的是发生这种情况的原因

服务器线程螺旋式下降并做自己的事情(即不断寻找新的连接并为这些连接建立新环境)并且更新线程关闭并做自己的事情(即这用于更新我的配额计数,因为我我正在使用谷歌 API)。除此之外,上面的代码说明了我在做什么。

0 投票
2 回答
2849 浏览

java - 如何模拟扫描仪的用户输入?

我有一个类,用户在终端窗口上进行交互并输入某些选项,根据这些选项进行切换并使用某些方法;我需要使用扫描仪来检测用户输入。

我尝试了几天来创建一个测试类来模拟用户输入,但我找不到合适的方法,因为我无法为扫描仪模拟 System.in,也没有找到任何具体信息,我看到了一些关于缓冲,但我不能使用它。

这是一个尝试,它导致扫描仪出现 nullPointerException - 因为没有检测到输入。我还尝试休眠然后设置输入。

非常感谢为 Scanner 模拟 System.in 的示例。

它在 TEMP - 2 处停止,因为它是一种递归方法,直到给出某个选项来终止程序。

0 投票
0 回答
1206 浏览

java - 使用 Scanner(System.in) 时的控制台默认值

我试图效仿这一点,

如果用户点击回车,默认选项将使用 Scanner 从 nextLine() 读取(默认是 System.in 中已经填充的值,在上面的示例中为字符串 y)。

如果用户想要更改他应该点击的值(退格/删除)并输入一个新值。

这种情况是否可以使用Scanner和 System.in?

这个问题不一样,我希望能够写入 System.in 所以当我对 Scanner 对象执行 nextLine() 时,它将返回我写的默认值。这是我在 bash 脚本中经常看到的东西。在那个问题中,他只是在打印的字符串中输出默认值,然后如果用户在空输入上按 Enter 键,则默认为默认值。

这是我发现的最接近的问题,答案是不可能做到。

你怎么看?

EDIT1:阅读下面汤姆的评论。

追求这种效果没有任何好处。

0 投票
2 回答
78 浏览

java - 尝试循环任何不是 1-3 和/或在他们选择过程结束时的用户选择 int

我不确定我是否也正确使用了 public static int 。总而言之,我觉得这段代码是一团糟至。

添加

减法

无效数字(<1 或 >3)的主菜单和/或在用户完成选择后直到他们选择选择数字 3:

0 投票
3 回答
225 浏览

java - 使用 BufferReader 从 User 获取输入

因此,当我运行程序的 main 方法时,它会打印:

出于某种原因,它Enter string 1 and Enter string 2甚至在我为字符串一输入任何内容之前就打印出来了。任何人都可以解释为什么会这样。我的BufferReader设置方式有问题吗?

代码: