web-dev-qa-db-fra.com

Comment détecter EOF en Java?

J'ai essayé quelques façons de détecter EOF dans mon code, mais cela ne fonctionne toujours pas .J'ai essayé d'utiliser BufferedReader, Scanner et d'utiliser char u001a pour marquer l'EOF, mais cela n'a toujours aucun sens. à mon code . Voici mon dernier code:

    Scanner n=new Scanner(System.in);
    String input;
    int counter=0;

    while(n.hasNextLine())
    {
        input=n.nextLine();
        char[] charInput=input.toCharArray();
        for (int i = 0; i < input.length(); i++) {
            if(charInput[i]=='"')
            {
                if(counter%2==0)
                {
                    System.out.print("``");
                }
                else
                {
                    System.out.print("''");
                }
                counter++;
            }
            else
            {
                System.out.print(charInput[i]);
            } 
        }
        System.out.print("\n");
    }

Le programme est censé s’arrêter quand il est déjà arrivé à l’EOF, mais je ne sais pas pourquoi, pour certaines raisons, il continue de tourner et génère une erreur d’exécution . S'il vous plaît, aidez-moi… Au fait, je suis nouveau ici, désolé si ma question n'est pas vraiment claire pour être comprise, merci avant :)

6
Bertha Alan

Il continue à fonctionner car il n'a pas rencontré EOF. En fin de flux:

  1. read() renvoie -1.
  2. read(byte[]) renvoie -1.
  3. read(byte[], int, int) renvoie -1.
  4. readLine() renvoie null.
  5. readXXX() pour tout autre X jette EOFException.
  6. Scanner.hasNextLine() renvoie false.
  7. Scanner.nextLine() jette NoSuchElementException.

À moins que vous n'ayez rencontré l'un d'entre eux, votre programme n'a pas rencontré de fin de flux. NB \u001a est un Ctrl/z. Pas EOF. EOF n'est pas une valeur de caractère.

9
user207421

C'est ce que j'ai fait

Scanner s = new Scanner(f); //f is the file object

while(s.hasNext())
{
String ss = s.nextLine();
System.out.println(ss);
}

A travaillé pour moi

0
Srijan Goyal