On 8/19/20 11:46 AM, Flade wrote:

Try instead getting a line via readln, and then trying to read that into your expected input.

-Steve

Thanks Steve! I will get the input a string then as you said and then I'll try to convert it! Thanks a lot, have a nice day!

In some cases clearerr() and readln() may be what is needed:

import std.stdio;

void main() {
  int x;

  bool accepted = false;

  while (!accepted) {
    try {
      write("x: ");
      readf(" %d", x);
      accepted = true;

    } catch (Exception msg) {

      writeln("Please give a right coordinate");
      stdin.clearerr();
      stdin.readln();
    }
  }

  writeln("x is ", x);
}

Note that I used " %d" because "%d/n" would not clean when nothing was input by just hitting the Enter key. A space character in the format string means "read and ignore any whitespace at this point" and I like it. :)

Also note I changed the name of the variable as 'accepted'. :)

Ali

Reply via email to