OneMoreError OneMoreError - 22 days ago 6
Java Question

Taking inputs with BufferedReader in Java

I have a bit of an annoying case here; wherein I am not able to take the input properly. I have always taken input via

Scanner
, and am not used to the
BufferedReader
.




INPUT FORMAT




First line contains T, which is an integer representing the number of test cases.
T cases follow. Each case consists of two lines.

First line has the string S.
The second line contains two integers M, P separated by a space.





EXAMPLE

Input:
2
AbcDef
1 2
abcabc
1 1





My code so far:




public static void main (String[] args) throws java.lang.Exception
{
BufferedReader inp = new BufferedReader (new InputStreamReader(System.in));
int T= Integer.parseInt(inp.readLine());

for(int i=0;i<T;i++) {
String s= inp.readLine();
int[] m= new int[2];
m[0]=inp.read();
m[1]=inp.read();

// Checking whether I am taking the inputs correctly
System.out.println(s);
System.out.println(m[0]);
System.out.println(m[1]);
}
}





When inputting to the above example shown, I get the following output:

AbcDef
9
49
2
9
97

Answer

BufferedReader#read reads single character[0 to 65535 (0x00-0xffff)] from the stream, so it is not possible to read single integer from stream.

            String s= inp.readLine();
            int[] m= new int[2];
            String[] s1 = inp.readLine().split(" ");
            m[0]=Integer.parseInt(s1[0]);
            m[1]=Integer.parseInt(s1[1]);

            // Checking whether I am taking the inputs correctly
            System.out.println(s);
            System.out.println(m[0]);
            System.out.println(m[1]);

You can check also Scanner vs. BufferedReader.