【问题标题】:How do i change this method to get strings instead of ints我如何更改此方法以获取字符串而不是整数
【发布时间】:2010-03-26 00:17:12
【问题描述】:

这里是原始代码:

public static int getInt () 
{
    Scanner in = new Scanner (System.in) ; 
    if (in.hasNextInt())
    {
        int a = in.nextInt() ; 
        return a ; 
    }
    else
    {
    System.out.println ("try again:") ; 
    return getInt () ; 
    }
}

这会检查它接收到的输入是否是 int。如果是,则返回 int,如果不是,则告诉您重试并重新运行。

这是我试图做的改变它:

public static String getIns () 
    {
        Scanner in = new Scanner (System.in) ; 
        if (in.hasNextString())
        {
            String a = in.nextString() ; 
            return a ; 
        }
        else
        {
        System.out.println ("try again:") ; 
        return getIns () ; 
        }
    }

但这不起作用。我查看了扫描仪类的文档,我认为问题在于没有像in.hasNextStringin.nextString 这样的方法,我可以使用扫描仪类中的哪些方法来做我打算做的事情?

【问题讨论】:

    标签: java methods java.util.scanner


    【解决方案1】:

    您应该阅读documentation

    您正在寻找nexthasNext

    【讨论】:

      【解决方案2】:

      使用Scanner.hasNext():

      public boolean hasNext()
      如果此扫描器在其输入中有另一个标记,则返回 true。此方法可能会在等待输入扫描时阻塞。扫描仪不会超过任何输入。

      【讨论】:

      • 我希望它确保令牌是一个字符串。 hasNext() 只是验证某物是否存在。
      • 问题是它拥有的任何标记都可能是一个字符串。您会注意到所有的 hasNextX() 方法都对应于原始类型。那是因为 Scanner 类可以判断下一个标记是否肯定可以变成 X。一切都可以变成 String,所以 hasNext() 将等价于 hasNextString()。
      猜你喜欢
      • 2016-06-08
      • 1970-01-01
      • 2013-10-30
      • 1970-01-01
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 2018-05-15
      • 1970-01-01
      相关资源
      最近更新 更多