Given that course.txt is accessible and contains:



Course::Java

and given the code fragment:

public static void main(String[] args){
    int i;
    char c;
    try (FileInputStream fis = new FileInputStream("/home/magiclencourse.txt");
            InputStreamReader isr = new InputStreamReader(fis);) {
        while (isr.ready()) { //line n1
            isr.skip(2);
            i = isr.read();
            c = (char) i;
            System.out.print(c);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

What is the result?

A. ur :: va
B. ueJa
C. The program prints nothing.
D. A compilation error occurs at line n1.

題解

用「*」來表示目前檔案指標的位置。

Course::Java
*

第11行whlie迴圈條件式成立。執行第12行,指標往後跳兩格。

Course::Java
  *

執行第13行,讀取到「u」之後,指標往後跳一格。

Course::Java
   *

執行第15行,輸出「u」。接著回到程式第11行,whlie迴圈條件式成立,會執行第12行,指標往後跳兩格。

Course::Java
     *

執行第13行,讀取到「e」之後,指標往後跳一格。

Course::Java
      *

執行第15行,輸出「e」。接著回到程式第11行,whlie迴圈條件式成立,會執行第12行,指標往後跳兩格。

Course::Java
        *

執行第13行,讀取到「J」之後,指標往後跳一格。

Course::Java
         *

執行第15行,輸出「J」。接著回到程式第11行,whlie迴圈條件式成立,會執行第12行,指標往後跳兩格。

Course::Java
           *

執行第13行,讀取到「a」之後,指標往後跳一格。

Course::Java
            *

執行第15行,輸出「a」。接著回到程式第11行,已經讀取到檔案結尾,所以whlie迴圈條件式不成立,跳出while迴圈。