tldr : используйте c = br.readLine().charAt(0)
вместо c = (char)br.read()
в вашем for
l oop, чтобы прочитать char
.
Если вы попытаетесь запустить его с q = 1
, а затем с char c = 'E'
в качестве ввода, он будет работать как положено.
Но то же самое с q = 2
, выполняется регистр по умолчанию и так далее для других значений q
.
Потому что, когда вы набираете E
или D
и нажимаете enter
, программы читают \r\n
, поэтому \r
для второй и затем \n
для третьей итерации.
Поэтому желательно использовать br.readLine().charAt(0)
, чтобы вы могли читать char
построчно.
Полный код будет следующим:
public static void main(String[] args) throws IOException {
//Scanner
//Scanner s = new Scanner(System.in);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int q = Integer.parseInt(br.readLine());
char c;
int i=0, j=0;
int id=0, jd=0;
int arr[][] = new int[q][q];
int temp[][] = new int[q][q];
for(int ip=0; ip<q; ip++)
{
c = br.readLine().charAt(0);
switch(c)
{
case 'E':
for(int al=i; al<i+1; al++)
{
for(int al2=j; al2<j++; al2++)
{
arr[i][j] = Integer.parseInt(br.readLine());
}
}
//an extra closing bracket was put here by OP at first
i++;
j++;
break;
case 'D':
System.out.println(arr[id][jd]);
id++;
jd++;
break;
default:
System.out.println(c);
System.out.println("wrong input");
}
} // one } was missing here too.
}