2013-03-27 66 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的变量,它的作用域对你的代码是可见的。