【问题标题】:Printing odd lines - line counter incremented two times打印奇数行 - 行计数器增加两次
【发布时间】:2013-08-16 10:01:28
【问题描述】:

我做了一个简单的程序,我想打印文件中的所有奇数行。

    public static void main(String[] args) throws FileNotFoundException{
    File file = new File("text.txt");
    Scanner fileRead = new Scanner(file);
    int lineCount = 0; 
    int i = 0;

    while(fileRead.hasNextLine()){
      lineCount++;
      i = lineCount % 2;
      System.out.println("Line count -- >> " + lineCount);
      if(i == 1){
          System.out.println(fileRead.nextLine());
      }          
    }        
    fileRead.close();
 }
}

所以当我运行它时,输出是

行数 -- >> 1

奇怪

行数 -- >> 2

行数 -- >> 3

甚至

行数 -- >> 4

行数 -- >> 5

奇怪

等等.... 为什么我让 lineCount 增加了两次?在此先感谢

【问题讨论】:

    标签: java file printing


    【解决方案1】:
     public static void main(final String[] args)
            throws FileNotFoundException
    {
        final File file = new File("C:\\textstr.txt");
        final Scanner fileRead = new Scanner(file);
        int lineCount = 0;
        int i = 0;
    
        while (fileRead.hasNextLine())
        {
            lineCount++;
            i = lineCount % 2;
            final String str = fileRead.nextLine();
            if (i == 1)
            {
                System.out.println("Line count -- >> " + lineCount);
                System.out.println(str);
            }
        }
        fileRead.close();
    }
    

    【讨论】:

      【解决方案2】:

      打印行数超出了检查奇数的条件,因此对于每个奇数行,您将获得两次输出。你也不会得到每一个奇数行,因为当行数为奇数时,你只会读到下一行

      你想要一些类似的东西:

      String line = fileRead.nextLine();
      if(i == 1){
          System.out.println(line);
      }  
      

      【讨论】:

      • 加上我打印了所有行,而不仅仅是奇数行,当我删除 if 时,行数正常
      【解决方案3】:

      在 if 条件中写 println 语句。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-06
        相关资源
        最近更新 更多