2017-05-30 40 views
-2

我begginer.While編譯此代碼如何解決從int到char的錯誤有損轉換?

class UpperLowerCase 

{ 
    static String ini = "I LOVE JAVA"; 
    static char str[] = ini.toCharArray(); 
    static char invr[] = new char[10]; 
    static int len = 0 , len1 = 0, i; 

    static void toUpper() 
    { 
     for(i=0;i<str.length;i++) 
     { 
      if(str[i]>=97 && str[i]<=122) 
       invr[len1++]=(str[i]-32); 
      else 
       invr[len++]=str[i]; 
     } 
     invr[len1]='\0'; 
     System.out.println("Reverse of"+ str+" is \n"+ invr); 

    } 

    static void toLower() 
    { 
     for(i=0;i<str.length;i++) 
     { 
      if(str[i]>=65 && str[i]<=90) 
       invr[len1++]=str[i]-32; 
      else 
       invr[len++]=str[i]; 
     } 
     invr[len1]='\0'; 
     System.out.println("Reverse of"+ str+" is \n"+ invr); 
    } 

public static void main(String [] args) 
{ 
    toUpper(); 
} 

} 

我得到 「從int可能有損轉換成char」 錯誤

如何INT爲char轉換。

請告訴我如何解決此錯誤,以幫助我嗎?

+1

'invr [len1 ++] =(char)(str [i] -32)'。 –

+3

可能重複的[我們可以將整數轉換爲字符](https://stackoverflow.com/questions/2533702/can-we-convert-integer-into-character) – Sam

回答

0

你可以做整型和字符之間的數學opetations時溢出,這可能會影響預期的結果,因爲該值將被分配給一個char ......在這裏你有

invr[len1++] = str[i]-32; 

但你應該強制轉換爲char:

invr[len1++] = (char)(str[i]-32); 
+0

謝謝但是,這樣做後,輸出是一些垃圾值。 ..是我的線沒有30(System.out.println(「+ str +的逆向」是\ n「+ invr))對嗎? – user8082934

+0

不可能,實際上你的算法被破壞並拋出一個ArrayIndexOutOfBoundsException異常 –

+0

修復,然後打印字符串爲Arrays.toString(str) –

相關問題