Método de leitura do leitor de fluxo de entrada retorna valor errado

Isso pode parecer muito fácil ou uma velha pergunta estúpida, mas é bem diferente para mim. Eu escrevi um programa para um padrão de pirâmide descendente que é assim.

1

1 2

1 2 3

1 2 3 4

1 2 3 4 5

Eu sei que isso é muito fácil, o truque é que eu não quero fazer isso usandoScanner eInteger.parseInt(). Eu estou tentando fazer isso comBufferedReader eInputStreamReader. Então, quando eu executo o seguinte código do meu método principal com uma entrada de 5 em num. Ele lê como 53 quando eu imprimi-lo. Eu não tenho ideia do porque está acontecendo. Mas quando eu uso o método 'Integer.parseInt (br.readLine ())', ele fornece a saída exata. Como é suposto acontecer quando o método de leitura deve ler valores int. Por favor, limpe-o.

    int num1;   
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Enter hte value of num1");
    //num1=Integer.parseInt(br.readLine());
    num1=br.read();
    System.out.println(num1);
    for(int i=0;i<num1;i++)
    {
        for(int j=0;j<=i;j++)
        {
            System.out.print(j+"\t");

        }
        System.out.println();
    }

É a minha primeira pergunta, então, por favor, ignore os erros bobos, tentei escrevê-lo da melhor forma que pude. Obrigado..

questionAnswers(3)

yourAnswerToTheQuestion