问题标签 [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.
java - 清除扫描仪(英寸)
在我的代码中,我有一个很长的顺序操作循环。我创建了一个线程来手动停止这个循环。基本上
并且线程基本上在标准输入上等待停止字符
问题是,如果循环正常退出,线程被锁在scanner.next上,所以下一个输入在仍然死的线程中丢失。如何从主类释放scanner.next?我已经尝试使用 scan.close() 但不起作用...
还有另一种停止循环的方法,而不杀死应用程序?我尝试使用 keyListener,但我有一个空指针
java.util.scanner - 在由关闭的流初始化的 Scanner 上调用 next() 不会引发 IllegalStateException
Scanner
文档说,当调用一个封闭的流时,next()
可能会抛出这两个异常:
NoSuchElementException - 如果没有更多令牌可用
IllegalStateException - 如果此扫描仪已关闭
此外hasNext()
可能会抛出此异常:
IllegalStateException - 如果此扫描仪已关闭
现在让我们假设我们有这个代码:
word1
这将按预期打印。如果我们取消注释sc.close(); sc = new Scanner(fis);
,NoSuchElementException
将在何时sc.next()
执行时抛出。
这种行为对我来说似乎很奇怪。不应该在关闭时hasNext()
抛出next()
一个?请解释为什么会这样。IllegalStateException
InputStream
java - 试图了解我的循环出错的地方
所以这是我的任务:
一个包裹的邮政公司对第一磅或其一小部分收取 15 美元,对于超过一磅的任何东西收取每磅 10 美元。编写一个打印包裹费用的程序。
变量:
重量
第一次执行:
重量?-12 权重必须是正数。
第二次执行:
重量?0 权重必须为正数。
第三次执行:
重量?2 支付:25.00 美元
第四次执行:
重量?2.8 支付:33.00 美元
第五次执行:
重量?2.07 支付:25.70 美元
这是我到目前为止开发的代码:
一切正常,但我不明白为什么(特别是在第四次和第五次执行中)最终输出总是 0.10 美分。谁能帮我达到我需要的准确性?
java - java中用户的基本阅读输入
我想读取一个字符并将其存储到char[]
数组中,这是我的方法称为getaline
和我的fgetc
方法:
这个方法应该从输入流中返回一个字符。
但是我在编译时不断收到一条错误消息:
错误:可能的精度损失
我应该在里面放什么fgetc
以便我可以收集用户的输入?
java - eclipse junit system.in java
我正在尝试在调用使用扫描仪和 System.in 的用户输入的方法上创建一个 junit 测试。
正在测试的方法如下所示:
目前,我在 jUnit 中使用以下设置:
操作数 1 和操作数 2 是用户添加并输入答案的随机生成的数字。
我遇到的问题是 System.setIn 没有从 jUnit 类传递到正在测试的类。
帮助?
java - 在没有主线程的情况下保持控制台输入处于活动状态?(爪哇)
我正在用 Java 编写一个服务器,它是多线程的。我构建了三个主要的活动线程,并从我的main方法开始:
例如,我的命令线程用于通过在控制台窗口中输入“q”来停止服务器。commands的run 方法定义如下:
*其中扫描定义为:Scanner scan = new Scanner(System.in);
当我运行我的服务器时,我的所有线程都工作,除了命令线程,因为控制台不接受输入。
然后我意识到,如果我等待我的服务器线程(这是我最关心的线程)加入我的主(静态方法)线程,我的命令线程就会工作。如果我将主要方法代码更改为以下内容,则意味着控制台接受输入:
现在我的问题。为什么控制台输入仅在主线程仍处于活动状态时才有效?老实说,我不再需要我的主线程,所以让它终止就可以了。
只是在没有名称的情况下定义了我的线程,我在这里做错了什么吗?我能够很好地终止每个线程,因为它们相互交织,并且除了我的命令线程之外一切正常。
编辑: 我非常感谢有关解决此问题的所有答案,但我真正追求的是发生这种情况的原因。
服务器线程螺旋式下降并做自己的事情(即不断寻找新的连接并为这些连接建立新环境)并且更新线程关闭并做自己的事情(即这用于更新我的配额计数,因为我我正在使用谷歌 API)。除此之外,上面的代码说明了我在做什么。
java - 如何模拟扫描仪的用户输入?
我有一个类,用户在终端窗口上进行交互并输入某些选项,根据这些选项进行切换并使用某些方法;我需要使用扫描仪来检测用户输入。
我尝试了几天来创建一个测试类来模拟用户输入,但我找不到合适的方法,因为我无法为扫描仪模拟 System.in,也没有找到任何具体信息,我看到了一些关于缓冲,但我不能使用它。
这是一个尝试,它导致扫描仪出现 nullPointerException - 因为没有检测到输入。我还尝试休眠然后设置输入。
非常感谢为 Scanner 模拟 System.in 的示例。
它在 TEMP - 2 处停止,因为它是一种递归方法,直到给出某个选项来终止程序。
java - 使用 Scanner(System.in) 时的控制台默认值
我试图效仿这一点,
如果用户点击回车,默认选项将使用 Scanner 从 nextLine() 读取(默认是 System.in 中已经填充的值,在上面的示例中为字符串 y)。
如果用户想要更改他应该点击的值(退格/删除)并输入一个新值。
这种情况是否可以使用Scanner和 System.in?
这个问题不一样,我希望能够写入 System.in 所以当我对 Scanner 对象执行 nextLine() 时,它将返回我写的默认值。这是我在 bash 脚本中经常看到的东西。在那个问题中,他只是在打印的字符串中输出默认值,然后如果用户在空输入上按 Enter 键,则默认为默认值。
这是我发现的最接近的问题,答案是不可能做到。
你怎么看?
EDIT1:阅读下面汤姆的评论。
追求这种效果没有任何好处。
java - 尝试循环任何不是 1-3 和/或在他们选择过程结束时的用户选择 int
我不确定我是否也正确使用了 public static int 。总而言之,我觉得这段代码是一团糟至。
添加
减法
无效数字(<1 或 >3)的主菜单和/或在用户完成选择后直到他们选择选择数字 3:
java - 使用 BufferReader 从 User 获取输入
因此,当我运行程序的 main 方法时,它会打印:
出于某种原因,它Enter string 1 and Enter string 2
甚至在我为字符串一输入任何内容之前就打印出来了。任何人都可以解释为什么会这样。我的BufferReader
设置方式有问题吗?
代码: