<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body>
<div>
<div dir="ltr">
<div dir="ltr">I don’t think my suggestions break type safety. Have a read for doubles or allow transforming Strings to a number via casting still maintains type safety. Or, I could suggest:</div>
<div dir="ltr">double value = readln(“Give me a value”);</div>
<div dir="ltr">that implies that the String should be converted because of the declared type on the LHS. This would also restrict var as it depends on the type on the RHS.</div>
<div dir="ltr"><br>
</div>
<div dir="ltr">Delusionally yours,</div>
<div dir="ltr">Ken</div>
</div>
</div>
<div id="ms-outlook-mobile-signature">
<div></div>
</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Remi Forax <forax@univ-mlv.fr><br>
<b>Sent:</b> Sunday, January 19, 2025 1:15:42 PM<br>
<b>To:</b> Kenneth Fogel <kfogel@dawsoncollege.qc.ca><br>
<b>Cc:</b> amber-dev <amber-dev@openjdk.org><br>
<b>Subject:</b> Re: Flogging a dead horse - reading a number</font>
<div> </div>
</div>
<div>
<div style="font-family:arial,helvetica,sans-serif; font-size:12pt; color:#000000">
<div><br>
</div>
<div><br>
</div>
<hr id="x_zwchr" data-marker="__DIVIDER__">
<div data-marker="__HEADERS__">
<blockquote style="border-left:2px solid #1010FF; margin-left:5px; padding-left:5px; color:#000; font-weight:normal; font-style:normal; text-decoration:none; font-family:Helvetica,Arial,sans-serif; font-size:12pt">
<b>From: </b>"Kenneth Fogel" <kfogel@dawsoncollege.qc.ca><br>
<b>To: </b>"amber-dev" <amber-dev@openjdk.org><br>
<b>Sent: </b>Sunday, January 19, 2025 6:55:34 PM<br>
<b>Subject: </b>Flogging a dead horse - reading a number<br>
</blockquote>
</div>
<div><style>
<!--
@font-face
{font-family:"Cambria Math"}
@font-face
{font-family:Aptos}
p.x_MsoNormal, li.x_MsoNormal, div.x_MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Aptos",sans-serif}
span.x_EmailStyle17
{font-family:"Aptos",sans-serif;
color:windowtext}
.x_MsoChpDefault
{font-size:11.0pt}
@page WordSection1
{margin:72.0pt 72.0pt 72.0pt 72.0pt}
div.x_WordSection1
{}
-->
</style></div>
<div data-marker="__QUOTED_TEXT__">
<blockquote style="border-left:2px solid #1010FF; margin-left:5px; padding-left:5px; color:#000; font-weight:normal; font-style:normal; text-decoration:none; font-family:Helvetica,Arial,sans-serif; font-size:12pt">
<div class="x_WordSection1">
<p class="x_MsoNormal"><span lang="EN-US">Hi,</span></p>
</div>
</blockquote>
<div><br>
</div>
<div>Hello,<br data-mce-bogus="1">
</div>
<div><br data-mce-bogus="1">
</div>
<blockquote style="border-left:2px solid #1010FF; margin-left:5px; padding-left:5px; color:#000; font-weight:normal; font-style:normal; text-decoration:none; font-family:Helvetica,Arial,sans-serif; font-size:12pt">
<div class="x_WordSection1">
<p class="x_MsoNormal"><span lang="EN-US">I have started a new course this past week, a first level Java course. Once we get past “Hello Moose” (in Canada we prefer this to Hello World) I present a simple program that calculates loan payments. Then I present
an interactive version where I am forced to write:</span></p>
<p class="x_MsoNormal"><span lang="EN-US"> var loan = Double.parseDouble(readln("Loan: "));</span></p>
<p class="x_MsoNormal"><span lang="EN-US"> var interest = Double.parseDouble(readln("Interest: "));</span></p>
<p class="x_MsoNormal"><span lang="EN-US"> var term = Double.parseDouble(readln("Term: "));</span></p>
<p class="x_MsoNormal"><span lang="EN-US">Its all going well until I must describe what Double.parseDouble is.</span></p>
<p class="x_MsoNormal"><span lang="EN-US">I do not need a read for each numeric type. A read for doubles is all I think is necessary and then I could write:</span></p>
<p class="x_MsoNormal"><span lang="EN-US"> var loan = (readNum("Loan: ")); // loan is a double</span></p>
<p class="x_MsoNormal"><span lang="EN-US">or if I need an integer:</span></p>
<p class="x_MsoNormal"><span lang="EN-US"> var numberOfCarrots = (int)readNum(“How many carrots do you need? “);
</span></p>
<p class="x_MsoNormal"><span lang="EN-US">Heck, if I were greedy, I’d ask that if you cast a readln this results in numeric input:</span></p>
<p class="x_MsoNormal"><span lang="EN-US"> var loan = (double) readln("Loan: ")); // Just like Python</span></p>
</div>
</blockquote>
<div><br>
</div>
<div>Java is not a dynamically typed language, so no !<br data-mce-bogus="1">
</div>
<div>That's said, you are free to provide a library for your students.<br data-mce-bogus="1">
</div>
<div><br data-mce-bogus="1">
</div>
<div>In my case, with my students, we first go from readln/println to IO.readln()/IO.println() and then we add Integer.parseInt() and Double.parseDouble(),<br data-mce-bogus="1">
</div>
<div>so Double.parseDouble() is not alien at the time it is introduced.<br data-mce-bogus="1">
</div>
<div><br data-mce-bogus="1">
</div>
<blockquote style="border-left:2px solid #1010FF; margin-left:5px; padding-left:5px; color:#000; font-weight:normal; font-style:normal; text-decoration:none; font-family:Helvetica,Arial,sans-serif; font-size:12pt">
<div class="x_WordSection1">
<p class="x_MsoNormal"><span lang="EN-US">But I’m not that greedy, today.</span></p>
<p class="x_MsoNormal"><span lang="EN-US">Ken</span></p>
</div>
</blockquote>
<div><br>
</div>
<div>regards,<br data-mce-bogus="1">
</div>
<div>Rémi<br data-mce-bogus="1">
</div>
<div><br data-mce-bogus="1">
</div>
</div>
</div>
</div>
</body>
</html>