Name: jl125535 Date: 06/22/2004 A DESCRIPTION OF THE REQUEST : I found out that the java.util.Scanner class is not orthogonal -- I mean, there is no method such as nextChar() or hasNextChar(). As I teach the Java classes, I think it is a bad idea for not having a full "primitive types coverage" in the Scanner class. Therefore I would really love if the interface of Scanner class could be extended to contain the nextChar() and hasNextChar() methods. JUSTIFICATION : As I teach the Java classes, I think it is a bad idea for not having a full "primitive types coverage" in the Scanner class. For example, a student asked me once: "How to read a real [double] value from the keyboard in a new way?" I say: "Use Scanner.nextDouble() method" There goes another question: "How to read a single chararcter from the keyboard in a new way?" As I assumed that if there are methods such as nextInt(), nextDouble() and the like, I answered: "Use Scanner.nextChar() method" Ooops. There is no Scanner.nextChar() method... This way there is AGAIN an exception in Java libraries, which will be forever explained to the students: * there is no nextChar() method * use different approach * every teacher will have different solution for this The same applies to not having a hasNextChar() method. EXPECTED VERSUS ACTUAL BEHAVIOR : EXPECTED - I would like the interface of Scanner class to be extended to contain the nextChar() and hasNextChar() methods. This way it would be perfect to write a program which reads a whole bunch of primitive values, as well as String values (look at the source code for an executable test case). ACTUAL - Currently there are no methods such as: * java.util.Scanner.nextChar() * java.util.Scanner.hasNextChar() ---------- BEGIN SOURCE ---------- import java.util.*; import static java.lang.*; public class InputTest { public static void main(String[] args) { Scanner sc = Scanner.create(System.in); out.print("Enter a line of text: "); String s = sc.nextLine(); out.print("Enter an integer value: "); int i = sc.nextInt(); out.print("Enter a double value: "); double d = sc.nextDouble(); out.print("Enter single character: "); char c = sc.nextChar(); // <---- There is no such (expected) method ! out.printf("You entered:\n" + "[String] %s\n" + "[int] %d\n" + "[double] %f\n" + "[char] %c\n", s, i, d, c); } } ---------- END SOURCE ---------- CUSTOMER SUBMITTED WORKAROUND : // I'm not sure how to deal best with the above problem (Incident Review ID: 280700) ====================================================================== ###@###.### 11/1/04 20:37 GMT
|