使用Java语言中的Scanner类进行搜索

时间:2011-08-02 19:01:21

标签: java java.util.scanner

我想在文本文件中搜索数字并找到它的行(如索引)并返回它.number逐行写入file.my方法:

static int Src(int num)  
{
    int c=0;
    Scanner s=new Scanner(f); 
    while(s.hasNextInt())
     {
        c++;
        int l=s.nextInt();
        if(l==k)
          return c;
     }   
     return -1;
    }

但没有任何反应。有哪些提示?

2 个答案:

答案 0 :(得分:1)

该文件的内容是什么?只是渴望?它是如何从下一个长期划分的?

你不计算线数,而是长数。你总是打破,因为你的缩进是错误的。你能做的是:

static int search (long k) throws FileNotFoundException
{
    int c = 0;
    Scanner s=new Scanner (f); //f is a file predefined
    while (s.hasNextLong ())
    {
        c++;
        long l = s.nextLong ();
        if (l == k) 
        {
            return c; 
        }
    }
    return -1;
}

如果删除break(返回后不需要中断 - 无法访问),则计算长数,因此如果每行有一个长,则可以使用。如果你有其他的东西,比如你的多头之间的“abc”,那就行不通了。我想,一个模式匹配“。”+ yourLong +“。”的LineNumberReader会更容易使用。

答案 1 :(得分:0)

您可以发布测试文件和测试用例吗?它看起来应该按原样运行。

一些提示:

  • 确保文件中的数字实际为long秒。请记住,long的最小值为-2 ^ 63,最大值为2 ^ 63-1。
  • 确保您正在阅读正确的文件
  • 确保f为File而不是String
  • 确保该文件仅包含 long。如果它包含任何其他内容,hasNextLong()将在该令牌之前返回false。

调试:

  • 添加System.out.println(l);以检查您是否正在阅读正确的数字

其他提示:

  • 您的方法名称应使用内部大小写(因此应将其称为search()
  • 返回后您不需要break