This may sound very easy or an old stupid question, but it is quite different for me. I have written a Program for a half-Descending pyramid Pattern which is like this.
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
I know this is very easy, the trick is I don't wanna do this by use of Scanner
and Integer.parseInt()
. I am trying to do this with BufferedReader
and InputStreamReader
.
So when I execute the following code of my main method with a input of 5 in num. It reads it as 53 when I print it. I have no idea why it's happening. But when I use the 'Integer.parseInt(br.readLine())' method it gives the exact output. How is it supposed to happen when read method is supposed to read int values. Please clear it.
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();
}
It's my first question so please ignore the silly mistakes, I have tried to write it as best as I could. Thanks..
It reads it as 53 when i prints it.
Yes, it would. Because you're calling read()
which returns a single character, or -1 to indicate the end of data.
The character '5' has Unicode value 53, so that's what you're seeing. (Your variable is an int
, after all.) If you cast num1
to a char
, you'll see '5' instead.
When you want to convert the textual representation of an integer into an integer value, you would usually use code such as Integer.parseInt
.
Bufferreader will read unicode value you need to convert it in a int by using:
Integer.parseInt(num1) or Character.getNumericValue(num1)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With