2013-03-27 67 views
0

過去幾天我一直在重新學習Java,直到現在都沒有問題。我正在嘗試編寫大量打印句子的示例代碼,然後將程序中的所有字符編入索引,最後按順序顯示它們。但它告訴我,「我」是不是在這裏初始化是我的代碼:未初始化代碼的一部分

String sentence = "This is a basic sentence sequence using letters and spaces in unicode!"; 
    int index = sentence.offsetByCodePoints(0, i); 
    int cp = sentence.codePointAt(i); 
    System.out.println(index); 
    if (Character.isSupplementaryCodePoint(cp)) i += 2; 
    else i++; 
    System.out.println(i); 
+1

看不見'i'在這個範圍內定義... – 2013-03-27 21:03:23

+0

你還沒有顯示你甚至已經聲明'i'的地方,這使得它很難幫助你。 – 2013-03-27 21:03:24

回答

1

自動初始化,初始化標識符「I」後,還是像串句之前:

String sentence = "This is a basic sentence sequence using letters and spaces in unicode!"; 
int i = 0; 
int index = sentence.offsetByCodePoints(0, i); 
int cp = sentence.codePointAt(i); 
System.out.println(index); 
if (Character.isSupplementaryCodePoint(cp)) i += 2; 
else i++; 
System.out.println(i); 
1

但它告訴我,「我」是不是在這裏初始化是我 拿到代碼:

我假設i是一個局部變量。在Java本地變量不會得到默認值。你應該在使用它們之前初始化它們。

public void localVarTest() { 
int i; 
System.out.println(i);//error cuz you have not initialized local var i 
} 

用默認值初始化它像:

public void localVarTest() { 
    int i=0; 
    System.out.println(i); 
    } 
+0

謝謝你添加這個,但是我發現了另一種解決方案 - 我自己 - 對不起! – CodeMonkeyAlx 2013-03-27 21:05:24

1

明白了,我不得不真正初始化「我」,像這樣:

 String sentence = "This is a basic sentence sequence using letters and spaces in unicode!"; 
    int i = 0; // Added this part to the code! 
    int index = sentence.offsetByCodePoints(0, i); 
    int cp = sentence.codePointAt(i); 
    System.out.println(index); 
    if (Character.isSupplementaryCodePoint(cp)) i += 2; 
    else i++; 
    System.out.println(i); 
1

如果你創建你裏面有方法變量給它們分配一個值:

int i = 0; 

個成員變量與(0/null

0

你應該確保i聲明和初始化,也使確定如果你有一個名爲i的變量,它的作用域對你的代碼是可見的。