2013-11-21 70 views
1

這裏是我的代碼字符不能被解除引用JAVA

import java.util.Scanner; 
public class prog3{ 
    public static void main(String[] args){ 
    Scanner input = new Scanner(System.in); 
    char a1 = input.nextLine().charAt(0); 
    char a = Character.toUpperCase(a1); 
    String b = input.nextLine(); 
    int size= b.length(); 
    char [] arr =b.toCharArray() ; 
    for (int i=0;i<size;i++){ 
     char temp = Character.toUpperCase(arr[i]); 
    if(a==temp){ 
    arr[i]=arr[i].replace(a,i); // here i am facing error 
    System.out.print(arr[i]); 
    } 


    } 

    } 

} 

我在line14面對錯誤

線:14:字符無法提領

我該怎麼解決此

回答

6

arr[i]將返回一個charchar是一種原始類型,不能被解除引用。此外,它沒有replace方法(或任何方法)。

我不知道你正在嘗試用你的代碼,這樣做,也許你想arr[i]=a;

+2

可能有助於指出原因。具體而言,「解引用」是查找參考指向的堆中的哪個位置的行爲。原語不是引用,因此不指向堆中的任何位置,因此不能被取消引用。 – yshavit

1
arr[i]=arr[i].replace(a,i); 
  1. arr[i]char:原始數據類型,因此無法提領。
  2. arr是一組char。一組char不是String。要使用replace功能,您應該選擇String或更適合您的情況:字符串處理類如StringBuilder