Created
January 15, 2014 18:59
-
-
Save praveendhinwa/8442154 to your computer and use it in GitHub Desktop.
Input and Output In Java using Egor's Code
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| class InputReader { | |
| private InputStream stream; | |
| private byte[] buf = new byte[1024]; | |
| private int curChar; | |
| private int numChars; | |
| private SpaceCharFilter filter; | |
| public InputReader(InputStream stream) { | |
| this.stream = stream; | |
| } | |
| public int read() { | |
| if (numChars == -1) | |
| throw new InputMismatchException(); | |
| if (curChar >= numChars) { | |
| curChar = 0; | |
| try { | |
| numChars = stream.read(buf); | |
| } catch (IOException e) { | |
| throw new InputMismatchException(); | |
| } | |
| if (numChars <= 0) | |
| return -1; | |
| } | |
| return buf[curChar++]; | |
| } | |
| public int readInt() { | |
| int c = read(); | |
| while (isSpaceChar(c)) | |
| c = read(); | |
| int sgn = 1; | |
| if (c == '-') { | |
| sgn = -1; | |
| c = read(); | |
| } | |
| int res = 0; | |
| do { | |
| if (c < '0' || c > '9') | |
| throw new InputMismatchException(); | |
| res *= 10; | |
| res += c - '0'; | |
| c = read(); | |
| } while (!isSpaceChar(c)); | |
| return res * sgn; | |
| } | |
| public long readLong() { | |
| int c = read(); | |
| while (isSpaceChar(c)) | |
| c = read(); | |
| int sgn = 1; | |
| if (c == '-') { | |
| sgn = -1; | |
| c = read(); | |
| } | |
| long res = 0; | |
| do { | |
| if (c < '0' || c > '9') | |
| throw new InputMismatchException(); | |
| res *= 10; | |
| res += c - '0'; | |
| c = read(); | |
| } while (!isSpaceChar(c)); | |
| return res * sgn; | |
| } | |
| public String readString() { | |
| int c = read(); | |
| while (isSpaceChar(c)) | |
| c = read(); | |
| StringBuilder res = new StringBuilder(); | |
| do { | |
| res.appendCodePoint(c); | |
| c = read(); | |
| } while (!isSpaceChar(c)); | |
| return res.toString(); | |
| } | |
| public boolean isSpaceChar(int c) { | |
| if (filter != null) | |
| return filter.isSpaceChar(c); | |
| return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1; | |
| } | |
| public String next() { | |
| return readString(); | |
| } | |
| public interface SpaceCharFilter { | |
| public boolean isSpaceChar(int ch); | |
| } | |
| } | |
| class OutputWriter { | |
| private final PrintWriter writer; | |
| public OutputWriter(OutputStream outputStream) { | |
| writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream))); | |
| } | |
| public OutputWriter(Writer writer) { | |
| this.writer = new PrintWriter(writer); | |
| } | |
| public void print(Object...objects) { | |
| for (int i = 0; i < objects.length; i++) { | |
| if (i != 0) | |
| writer.print(' '); | |
| writer.print(objects[i]); | |
| } | |
| } | |
| public void printLine(Object...objects) { | |
| print(objects); | |
| writer.println(); | |
| } | |
| public void close() { | |
| writer.close(); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment