it-swarm.com.de

Eingaben mit BufferedReader in Java übernehmen

Ich habe hier einen nervigen Fall. wobei ich die Eingabe nicht richtig übernehmen kann. Ich habe immer Eingaben über Scanner erhalten und bin nicht an BufferedReader gewöhnt. 


EINGABEFORMAT


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.

BEISPIEL

Input:
2
AbcDef
1 2
abcabc
1 1

Mein Code bisher:


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]);
    }
}

Bei der Eingabe des obigen Beispiels erhalte ich folgende Ausgabe:

AbcDef
9
49
2
9
97
7
OneMoreError

BufferedReader#read liest ein einzelnes Zeichen [0 bis 65535 (0x00-0xffff)] aus dem Stream, daher ist es nicht möglich, einzelne Ganzzahlen aus dem Stream zu lesen.

            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]);

Sie können auch Scanner vs. BufferedReader überprüfen.

14

Die Problem-ID wegen inp.read();method . Sein einzelnes Zeichen wird zu einem Zeitpunkt zurückgegeben und weil Sie es in einem Array vom Typ int speichern, so dass nur der Wert des ASCII-Werts gespeichert wird.

Was können Sie einfach tun? 

for(int i=0;i<T;i++) {
    String s= inp.readLine();
    String[] intValues = inp.readLine().split(" ");
    int[] m= new int[2];
    m[0]=Integer.parseInt(intValues[0]);
    m[1]=Integer.parseInt(intValues[1]);

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

Sie können einzelne Ganzzahlen in einer einzelnen Zeile nicht separat mit BufferedReader lesen wie mit Scannerclass . In Bezug auf Ihre Abfrage können Sie jedoch Folgendes tun:

import Java.io.*;
class Test
{
   public static void main(String args[])throws IOException
    {
       BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
       int t=Integer.parseInt(br.readLine());
       for(int i=0;i<t;i++)
       {
         String str=br.readLine();
         String num[]=br.readLine().split(" ");
         int num1=Integer.parseInt(num[0]);
         int num2=Integer.parseInt(num[1]);
         //rest of your code
       }
    }
}

Ich hoffe, dies wird dir helfen.

0
Anubhav Singh