Here is the program i have written for converting case of string. However i am getting a compilation error as i have commented in the following program. Can you please explain to me in context of my code, what i am doing wrong?
public class Togg
{
public static void main(String args[])
{
String small="nayanjindalrocks";
char a[]=new char[small.length()];
int i;
for(i=0;i<a.length;i++)
{
a[i]=small.charAt(i);
if(a[i]>='A'&&a[i]<='Z')
{
a[i]=a[i]+32; // Type mismatch: cannot convert from int to char (Add cast to char)
}
else
{
a[i]=a[i]-32; // Type mismatch: cannot convert from int to char (Add cast to char)
}
}
String news=new String(a);
System.out.print(news);
}
}

As the compiler says, you're trying to assign an int value (the result of a[i] + 32 for example to a char variable (a[i]). The "surprise" part here is that the result of a[i] + 32 is a char... but it's only a surprise if you don't look at JLS 15.18.2, which specifies the + operator for numeric types, and which specifies that binary numeric promotion is applied first. In this case, a[i] is implicitly promoted to int before the addition is performed.
Options:
Add the cast, e.g.
a[i] = (char) (a[i] + 32);
Use += or -= which performs the cast implicitly
a[i] += 32;
See more on this question at Stackoverflow