J'ai un cas un peu ennuyeux ici; dans lequel je ne suis pas capable de prendre correctement l'entrée. J'ai toujours pris des entrées via Scanner
, et je ne suis pas habitué à la BufferedReader
.
FORMAT D'ENTRÉE
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.
EXEMPLE
Input:
2
AbcDef
1 2
abcabc
1 1
Mon code jusqu'à présent:
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]);
}
}
En entrant dans l'exemple ci-dessus, j'obtiens le résultat suivant:
AbcDef
9
49
2
9
97
BufferedReader#read
lit le caractère unique [0 à 65535 (0x00-0xffff)] du flux, il est donc impossible de lire un entier entier à partir du flux.
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]);
Vous pouvez également vérifier Scanner vs. BufferedReader .
L'identifiant du problème à cause de inp.read();
méthode . Il ne renvoie qu'un caractère à la fois et parce que vous le stockez dans un type de tableau de type int, il ne stocke donc que la valeur ascii de ce dernier.
Que pouvez-vous faire simplement
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]);
}
Vous ne pouvez pas lire des nombres entiers individuels sur une seule ligne séparément à l'aide de BufferedReader
comme vous le faites avec Scanner
class . Bien que vous puissiez faire quelque chose comme ceci en ce qui concerne votre requête:
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
}
}
}
J'espère que cela t'aidera.