@Deprecated
public class ScanfReader
extends java.io.Reader
There are scan methods to read float, double, long, int, char, char[], and String. The methods take as an argument either a format string, a pre-allocated ScanfFormat object which is created from a format string, or no argument (implying a default format). The format string is modeled after that accepted by the C scanf() methodName, and is described in the documentation for the class ScanfFormat.
Because Java does not permit variable-length argument lists, only one primitive type may be returned per method, and the format used may contain only one conversion specification (which must be appropriate to the type being scanned).
Input errors in the underlying Reader result in a java.io.IOException being thrown, while a java.io.EOFException is thrown if the end of input is reached before the scan can complete successfully. If the input does not match the specified format, then a ScanfMatchException is thrown. In the event of a match error, scanning stops at the first character from which it can be determined that the match will fail. This character is remembered by the stream (see the discussion of the look-ahead character, below) and will be the first character seen by the next scan or read method which is called. Finally, an invalid format string (or ScanfFormat object) will trigger an InvalidArgumentException.
The class keeps track of the current line number (accessible with the methods getLineNumber and setLineNumber), as well as the number of characters which have been consumed (accesible with the methods getCharNumber and setCharNumber).
The class usually keeps one character of look-ahead which has been read from the underlying reader but not yet consumed by any scan method. If the underlying reader is used later in some other capacity, this look-ahead character may have to be taken into account. If a look-ahead character is actually being stored, the lookAheadCharValid method will return true, and the look-ahead character itself can then be obtained using the getLookAheadChar method. The look-ahead character can be cleared using the clearLookAheadChar method.
| Constructor and Description |
|---|
ScanfReader(java.io.Reader in)
Deprecated.
Create a new ScanfReader from the given reader.
|
| Modifier and Type | Method and Description |
|---|---|
void |
clearLookAheadChar()
Deprecated.
Clears the look-ahead character.
|
void |
close()
Deprecated.
Closes the stream.
|
int |
getCharNumber()
Deprecated.
Gets the current character number (equal to the number of characters that have been consumed by the stream).
|
int |
getLineNumber()
Deprecated.
Gets the current line number.
|
int |
getLookAheadChar()
Deprecated.
Returns the look-ahead character.
|
boolean |
lookAheadCharValid()
Deprecated.
Returns whether or not a look-ahead character is currently begin stored.
|
int |
read(char[] cbuf,
int off,
int len)
Deprecated.
Reads characters into a portion of a character array.
|
char |
scanChar()
Deprecated.
Scan and return a single character, using the default format string "%c".
|
char |
scanChar(ScanfFormat fmt)
Deprecated.
Scan and return a single character, using a pre-allocated ScanfFormat object.
|
char |
scanChar(java.lang.String s)
Deprecated.
Scan and return a single character.
|
char[] |
scanChars(int n)
Deprecated.
Scan and return a character array, using the default format string "%c", with the field width (number of characters to read) supplanted by the argument n.
|
char[] |
scanChars(ScanfFormat fmt)
Deprecated.
Scan and return a character array, using a pre-allocated ScanfFormat object.
|
char[] |
scanChars(java.lang.String s)
Deprecated.
Scan and return a character array, whose size is determined by the field width specified in the format string (with a default width of 1 being assumed if no width is
specified).
|
long |
scanDec()
Deprecated.
Scan and return a signed decimal (long) integer, using the default format string "%d".
|
long |
scanDec(ScanfFormat fmt)
Deprecated.
Scan and return a signed decimal (long) integer, using a pre-allocated ScanfFormat object.
|
long |
scanDec(java.lang.String s)
Deprecated.
Scan and return a signed decimal (long) integer.
|
double |
scanDouble()
Deprecated.
Scan and return a double, using the default format string "%f".
|
double |
scanDouble(ScanfFormat fmt)
Deprecated.
Scan and return a double, using a pre-allocated ScanfFormat object.
|
double |
scanDouble(java.lang.String s)
Deprecated.
Scan and return a double.
|
float |
scanFloat()
Deprecated.
Scan and return a float, using the default format string "%f".
|
float |
scanFloat(ScanfFormat fmt)
Deprecated.
Scan and return a float, using a pre-allocated ScanfFormat object.
|
float |
scanFloat(java.lang.String s)
Deprecated.
Scan and return a float.
|
long |
scanHex()
Deprecated.
Scan and return a hex (long) integer, using the default format string "%x".
|
long |
scanHex(ScanfFormat fmt)
Deprecated.
Scan and return a hex (long) integer, using a pre-allocated ScanfFormat object.
|
long |
scanHex(java.lang.String s)
Deprecated.
Scan and return a hex (long) integer.
|
int |
scanInt()
Deprecated.
Scan and return a signed integer, using the default format string "%i".
|
int |
scanInt(ScanfFormat fmt)
Deprecated.
Scan and return a signed integer, using a pre-allocated ScanfFormat object.
|
int |
scanInt(java.lang.String s)
Deprecated.
Scan and return a signed integer.
|
long |
scanLong()
Deprecated.
Scan and return a signed (long) integer, using the default format string "%i".
|
long |
scanLong(ScanfFormat fmt)
Deprecated.
Scan and return a signed (long) integer, using a pre-allocated ScanfFormat object.
|
long |
scanLong(java.lang.String s)
Deprecated.
Scan and return a signed (long) integer.
|
long |
scanOct()
Deprecated.
Scan and return an octal (long) integer, using the default format string "%o".
|
long |
scanOct(ScanfFormat fmt)
Deprecated.
Scan and return an octal (long) integer, using a pre-allocated ScanfFormat object.
|
long |
scanOct(java.lang.String s)
Deprecated.
Scan and return an octal (long) integer.
|
java.lang.String |
scanString()
Deprecated.
Scan and return a String, using the default format string "%s".
|
java.lang.String |
scanString(ScanfFormat fmt)
Deprecated.
Scan and return a String, using a pre-allocated ScanfFormat object.
|
java.lang.String |
scanString(java.lang.String s)
Deprecated.
Scan and return a String.
|
void |
setCharNumber(int n)
Deprecated.
Sets the current character number.
|
void |
setLineNumber(int n)
Deprecated.
Sets the current line number.
|
boolean |
useCstandard()
Deprecated.
White spaces are skipped at the beginning of a line if flag is true otherwise spaces are counted as valid characters.
|
void |
useCstandard(boolean flag)
Deprecated.
White spaces are skipped at the beginning of a line if flag is true otherwise spaces are counted as valid characters.
|
public ScanfReader(java.io.Reader in)
reader - Underlying Readerpublic void clearLookAheadChar()
public void close()
throws java.io.IOException
close in interface java.io.Closeableclose in interface java.lang.AutoCloseableclose in class java.io.Readerjava.io.IOException - An I/O error occurredpublic int getCharNumber()
setCharNumber(int)public int getLineNumber()
setLineNumber(int)public int getLookAheadChar()
public boolean lookAheadCharValid()
public int read(char[] cbuf,
int off,
int len)
throws java.io.IOException
read in class java.io.Readercbuf - Buffer to write characters intooff - Offset to start writing atlen - Number of characters to readjava.io.IOException - An I/O error occurredpublic char scanChar()
throws java.io.IOException,
ScanfMatchException
s - Format stringScanfMatchException - Input did not match formatjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanChar(String)public char scanChar(java.lang.String s)
throws java.io.IOException,
ScanfMatchException,
java.lang.IllegalArgumentException
The format string s must have the form described by the documentation for the class ScanfFormat , and must contain the conversion character 'c' or '['. If the conversion character is '[', then each character scanned must match the sequence specified between the '[' and the closing ']' (see the documentation for ScanfFormat).
White space preceding the character is not skipped.
s - Format stringScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormatpublic char scanChar(ScanfFormat fmt) throws java.io.IOException, java.lang.IllegalArgumentException
fmt - Format objectScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanChar(String)public char[] scanChars(java.lang.String s)
throws java.io.IOException,
ScanfMatchException,
java.lang.IllegalArgumentException
The format string s must have the form described by the documentation for the class ScanfFormat , and must contain the conversion characters 'c' or '['. If the conversion character is '[', then each character scanned must match the sequence specified between the '[' and the closing ']' (see the documentation for ScanfFormat).
White space preceding the character sequence is not skipped.
s - Format stringScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormatpublic char[] scanChars(int n)
throws java.io.IOException,
ScanfMatchException,
java.lang.IllegalArgumentException
n - Number of characters to readjava.lang.IllegalArgumentException - n not a positive numberScanfMatchException - Input did not match formatjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanChars(String)public char[] scanChars(ScanfFormat fmt) throws java.io.IOException, java.lang.IllegalArgumentException
fmt - Format objectScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanChars(String)public long scanDec()
throws java.io.IOException,
ScanfMatchException
s - Format stringScanfMatchException - Input did not match formatjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanDec(String)public long scanDec(java.lang.String s)
throws java.io.IOException,
ScanfMatchException,
java.lang.IllegalArgumentException
The format string s must have the form described by the documentation for the class ScanfFormat , and must contain the conversion character 'd'. The integer itself must consist of an optional sign ('+' or '-') followed by a sequence of digits. White space preceding the number is skipped.
s - Format stringScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormatpublic long scanDec(ScanfFormat fmt) throws java.io.IOException, java.lang.IllegalArgumentException
fmt - Format objectScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanDec(String)public double scanDouble()
throws java.io.IOException,
ScanfMatchException
ScanfMatchException - Input did not match formatjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanDouble(String)public double scanDouble(java.lang.String s)
throws java.io.IOException,
ScanfMatchException,
java.lang.IllegalArgumentException
The format string s must have the form described by the documentation for the class ScanfFormat , and must contain the conversion character 'f'. The number itself may consist of (a) an optional sign ('+' or '-'), (b) a sequence of decimal digits, with an optional decimal point, (c) an optional exponent ('e' or 'E'), which must by followed by an optionally signed sequence of decimal digits. White space immediately before the number is skipped.
s - Format stringScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormatpublic double scanDouble(ScanfFormat fmt) throws java.io.IOException, ScanfMatchException, java.lang.IllegalArgumentException
fmt - Format objectScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanDouble(String)public float scanFloat()
throws java.io.IOException,
ScanfMatchException
ScanfMatchException - Input did not match formatjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanDouble(String)public float scanFloat(java.lang.String s)
throws java.io.IOException,
ScanfMatchException,
java.lang.IllegalArgumentException
s - Format stringScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanDouble(String)public float scanFloat(ScanfFormat fmt) throws java.io.IOException, ScanfMatchException, java.lang.IllegalArgumentException
fmt - Format objectScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanDouble(String)public long scanHex()
throws java.io.IOException,
ScanfMatchException
s - Format stringScanfMatchException - Input did not match formatjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanHex(String)public long scanHex(java.lang.String s)
throws java.io.IOException,
ScanfMatchException,
java.lang.IllegalArgumentException
The format string s must have the form described by the documentation for the class ScanfFormat , and must contain the conversion character 'x'. The integer itself must be formed from the characters [0-9a-fA-F], and white space which immediately precedes it is skipped.
s - Format stringScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormatpublic long scanHex(ScanfFormat fmt) throws java.io.IOException, java.lang.IllegalArgumentException
fmt - Format objectScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanHex(String)public int scanInt()
throws java.io.IOException,
ScanfMatchException
s - Format stringScanfMatchException - Input did not match formatjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanInt(String)public int scanInt(java.lang.String s)
throws java.io.IOException,
ScanfMatchException,
java.lang.IllegalArgumentException
The format string s must have the form described by the documentation for the class ScanfFormat , and must contain one of the conversion characters "doxi".
Specifying the conversion characters 'd', 'o', or 'x' is equivalent to calling (int versions of) scanDec, scanOct, and scanHex, respectively.
If the conversion character is 'i', then after an optional sign ('+' or '-'), if the number begins with an 0x, then it is scanned as a hex number; if it begins with an 0, then it is scanned as an octal number, and otherwise it is scanned as a decimal number. White space preceding the number is skipped.
s - Format stringScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanDec(String),
scanOct(String),
scanHex(String)public int scanInt(ScanfFormat fmt) throws java.io.IOException, java.lang.IllegalArgumentException
fmt - Format objectScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanInt(String)public long scanLong()
throws java.io.IOException,
ScanfMatchException
s - Format stringScanfMatchException - Input did not match formatjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanInt(String)public long scanLong(java.lang.String s)
throws java.io.IOException,
ScanfMatchException,
java.lang.IllegalArgumentException
s - Format stringScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorscanInt(String)public long scanLong(ScanfFormat fmt) throws java.io.IOException, java.lang.IllegalArgumentException
fmt - Format objectScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorscanInt(String)public long scanOct()
throws java.io.IOException,
ScanfMatchException
s - Format stringScanfMatchException - Input did not match formatjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanOct(String)public long scanOct(java.lang.String s)
throws java.io.IOException,
ScanfMatchException,
java.lang.IllegalArgumentException
The format string s must have the form described by the documentation for the class ScanfFormat , and must contain the conversion character 'o'. The integer itself must be composed of the digits [0-7], and white space which immediately precedes it is skipped.
s - Format stringScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormatpublic long scanOct(ScanfFormat fmt) throws java.io.IOException, java.lang.IllegalArgumentException
fmt - Format objectScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanOct(String)public java.lang.String scanString()
throws java.io.IOException,
ScanfMatchException
s - Format stringScanfMatchException - Input did not match formatjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanString(String)public java.lang.String scanString(java.lang.String s)
throws java.io.IOException,
ScanfMatchException,
java.lang.IllegalArgumentException
The format string s must have the form described by the documentation for the class ScanfFormat , and must contain the conversion character 's'. The string returned corresponds to the next non-white-space sequence of characters found in the input, with preceding white space skipped.
s - Format stringScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormatpublic java.lang.String scanString(ScanfFormat fmt) throws java.io.IOException, java.lang.IllegalArgumentException
fmt - Format objectScanfMatchException - Input did not match formatjava.lang.IllegalArgumentException - Error in format specificationjava.io.EOFException - End of filejava.io.IOException - Other input errorScanfFormat,
scanString(String)public void setCharNumber(int n)
n - New character numbergetCharNumber()public void setLineNumber(int n)
n - New line numbersetLineNumber(int)public boolean useCstandard()
public void useCstandard(boolean flag)