已经为此纠结了一天,来来回回看论坛,没有结果。任何人都可以告诉我为什么函数aMenu()的第二次调用返回一个零,而不等待新的用户输入?我尝试了各种方法,如hasNextInt()、nextLine(),但都不起作用。hasNextInt()不应该在用户写东西之前阻止吗?我该怎么解决这个?多谢了。
package FirstJavaPackage;
import java.util.Scanner;
public class testScanner
{
public static void main(String[] args)
{
int choice = aMenu();
System.out.println("You typed: "+choice);
choice = aMenu();
System.out.println("You typed: "+choice);
}
public static int aMenu()
{
int result = 0;
System.out.println("In aMenu... enter an int: ");
Scanner keyboard = new Scanner(System.in);
if (keyboard.hasNextInt())
result = keyboard.nextInt();
keyboard.close();
return result;
}
}
您需要在对amenu()
的调用中重用相同的扫描器
对象:
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
int choice = aMenu(keyboard);
System.out.println("You typed: "+choice);
choice = aMenu(keyboard);
System.out.println("You typed: "+choice);
}
public static int aMenu(Scanner keyboard)
{
int result = 0;
System.out.println("In aMenu... enter an int: ");
result = keyboard.nextInt();
return result;
}
有关进一步讨论,请参见如何在System.in上使用多个扫描器对象?
我这里有两个代码块。一个扫描器正确地等待用户输入,另一个则直接通过它并调用,返回。下面是工作的块: 下面是没有的块: 这两个都是单独的类,并且是从另一个类中的main方法调用的。基本上,调用,后者又调用某个Player类的方法...这是非工作代码所在的地方。程序中是否有不适合接受输入的时候?我的印象是,任何时候我需要用户输入,我都可以使用这种方法。谢谢!
问题内容: 我正在使用Java的扫描仪读取用户输入。如果我仅使用nextLine一次,那就可以了。使用两个nextLine时,第一个不会等待用户输入字符串(第二个会输入)。 输出: X:Y :(等待输入) 我的密码 任何想法为什么会发生这种情况?谢谢 问题答案: 您可能像以前那样调用方法。这样的程序是这样的: 演示您所看到的行为。 问题是不消耗,因此下一个调用将消耗它,然后等待读取的输入。 您需要
为此,我创建了一个名为的单例。这个类处理所有的输入阅读内容。我创建了一个名为的方法,它将回调作为参数。在这个方法中,我创建了一个新线程,并在其中等待使用的输入。这个类还有方法,它向上面描述的线程发送中断消息。下面是该类的当前实现: 这个代码极不可靠。我一会儿就告诉你我的意思。我制作了一个名为Client的玩具类,在中,我用计时器模拟了消息收入。 以下是它的工作原理: 我知道这个问题非常长(也许是不
我认为这是一个非常简单的问题,但在过去的几个月里,我遇到了很多次。我在一个方法中创建一个扫描器,然后尝试关闭它,它总是给我一个错误。这一次的错误是: 错误:无法从静态上下文扫描程序引用非静态方法close()。close();
我有一个写文件的方法,它可能有点慢。因此,我这样做是为了避免阻止其他操作: 然而,直到在a之后执行B之后,仍然需要一段时间,我想知道是否应该这样做: 或者,换句话说,调用一个内部有线程的方法是否意味着等待该方法结束,从而等待线程结束? 只是为了澄清一些事情:我想知道两个选项是否相同,或者在第一个选项中,线程是否应该完成以启动B指令。
我承认,我已经研究了很多(类似的)问题,但我似乎无法理解我为一个基本的SPOJ问题(http://www.SPOJ.com/problems/onp/)编写的以下代码中的上下文用法(http://www.SPOJ.com/problems/onp/): 如果我使用nextLine()而不是next(),那么SPOJ引擎会生成一个‘错误的答案’响应。 此外,在postfixString函数中使用St