<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <font size="4" face="monospace">Yes, these were considered, and
      dismissed with prejudice, in part because the model implied by
      readInt and readDouble is a problematic one, because it greatly
      complicates the "reading state" that has to be understood by the
      user (e.g., what if there's no digits on the line, does it read
      another line?  what if the digits end mid-line, does it leave the
      cursor there?  what if it consumes all the characters on the line,
      and then you read a string?)  These are issues that invariably
      trip up beginners and experienced users alike.  <br>
      <br>
      The locution you suggest, which is to use readln() to read a line
      into a String, then parseInt() to convert to an int, is more wordy
      than some of the alternatives, but much clearer and simpler as to
      what is going on, because it composes two simple functions (read a
      string, convert a string to an int).  This is good for beginners,
      because they can see that there are steps here to get the data
      into the form they want.  The readInt() method provides the
      illusion of simplicity, but ends up moving significant complexity
      to where we are more likely to trip over it in the dark.<br>
      <br>
      I'm not saying there will never be a richer way to do this, but
      readInt() and friends are definitely not it.<br>
      <br>
      More generally, one of the worst things about creating an IO class
      is that it immediately becomes  target for a flood of "can you
      just add my one favorite method" requests.  We might add a few
      more methods to it in the next decade.  But we also might not;
      less is more.<br>
    </font><br>
    <br>
    <div class="moz-cite-prefix">On 11/7/2024 12:06 PM, Barry Burd
      wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:a0b8e796-5592-4581-90aa-f673d794240e@drew.edu">I see
      that parameterless println() and readln() methods are being added
      to java.io.IO in JEP 495. I'm still wondering if there's been any
      thought to including methods like readInt and readDouble. In the
      early stage of an introduction to Java, it's common to have the
      student input int values and double values for simple examples.
      With the current spec, the best way to do this (as far as I can
      see) is
      <br>
      <br>
            var n = Integer.parseInt(readln("Enter a number"));
      <br>
      <br>
      It seems natural to simplify this with a readInt method, and the
      addition of such a method wouldn't weigh heavily on the java.io.IO
      package.
      <br>
      Any thoughts?
      <br>
        --Barry
      <br>
    </blockquote>
    <br>
  </body>
</html>