2012-03-07 100 views
-2

有什么不对的setChar声明:这个setChar语句有什么问题?

setChar(stringArray, numLetterChange, charLetterChange); 

stringArray实际上是一个字符数组,其最初是作为一个字符串。 numLetterChange变量是用户在0到3之间输入的数字,表示他们想要在数组中更改哪些字母,而charLetterChange是他们希望将其更改为的字母。任何答案将不胜感激。

(ChangeOneLetter.jave:67:错误:无法找到符号)是我收到

+6

这可能有助于在此处查看某些代码。 – TyC 2012-03-07 18:13:36

+2

显示真实来源。包含源代码覆盖“stringArray实际上是一个char数组,它起源于一个字符串” – DwB 2012-03-07 18:14:22

回答

0

错误的错误消息意味着正是它说:你引用并不在这一点上存在一个名称码。这可能是因为您没有使用您在此使用的参数签名完全定义的方法setChar。然而,更有可能的是你的一个(或多个)变量超出了范围。典型的代码,可能导致这就是:

try { 
    int numLetterChange = . . . // get user input 
    char charLetterChange = . . . // get more user input 
} catch (IOException e) { 
    // print error message 
} 
setChar(stringArray, numLetterChange, charLetterChange); 

如果你有这样的结构(无论是使用try/catch或任何其他块结构),该解决方案是移动变量的声明,因此外块在区块退出后保持在范围内:

int numLetterChange; 
char charLetterChange; 
try { 
    numLetterChange = . . . // get user input 
    charLetterChange = . . . // get more user input 
} catch (IOException e) { 
    // print error message 
} 
setChar(stringArray, numLetterChange, charLetterChange); 
+0

在你的例子中,我认为编译器仍然抱怨说这些变量可能不会被设置,除非它们在声明或'catch'如果'catch'中有'throw')。 – 2012-03-07 18:39:18

+0

@PaulBellora - 是的,编译器会抱怨。我并没有试图编写完整的代码,只是为了说明变量的范围。很容易将变量初始化为0(或其他)以避免错误,但除非默认值有意义,否则最好查看投诉。应将代码组织为明确分配值或避免执行依赖于已分配的明确值的代码。 – 2012-03-07 19:01:14

+0

我想我们在组织代码的同一页上。当我说抱怨的时候,我的意思是,如果初学者逐字复制,它就不会编译。 – 2012-03-08 02:15:41