使用if / else语句时“无法解析符号”

时间:2012-02-06 04:35:39

标签: java string class gwt compiler-errors

我只是想知道为什么我用以下代码得到“无法解析符号initialText”。 isItA是用户之前选择的布尔值,具体取决于它们将要粘贴到文本区域的文本类型(A或B)。 initialText有2个潜在的字符串,输出的字符串取决于布尔值isItA。当我在if / else语句之外使用initialText时,我不明白为什么会出现此错误;如果在'if / else'语句中,编译器应该能够解析外面的字符串吗?我目前在IntelliJ中使用GWT。在这一点上,我仍然是java的菜鸟,所以对此为何发生的基本解释将非常感激:)提前感谢。下面是一段代码。

protected TextArea getNewTextArea() {
    if ( newTextArea == null ) {

        if (isItA){
            final String initialText = "Please paste valid text A here, and then
            press" + "the \"" + Labels.ADD_A_BUTTON_TEXT + "\" button.";

        }else{
            final String initialText = "Please paste valid text B here, and then press " + "the \"" + Labels.ADD_B_BUTTON_TEXT + "\" button.";
        }


        newTextArea = new TextArea();
        newTextArea.setText( initialText );
        newTextArea.addClickHandler( new ClickHandler() {
            public void onClick( ClickEvent clickEvent ) {
                // If the text is still the original text, then clear it.
                if ( newTextArea.getText().equals( initialText ) ) {
                    newTextArea.setText( "" );
                }

            }
        });
    }
}

4 个答案:

答案 0 :(得分:3)

initialText是不可解的,因为它不在给定的代码块范围内。

要解决此问题,请在if / else语句之前声明intitalText,如下所示:

protected TextArea getNewTextArea() {
    if ( newTextArea == null ) {

        final String initialText;
        if (isItA){
            initialText = "Please paste valid text A here, and then
            press" + "the \"" + Labels.ADD_A_BUTTON_TEXT + "\" button.";

        }else{
            initialText = "Please paste valid text B here, and then press " + "the \"" + Labels.ADD_B_BUTTON_TEXT + "\" button.";
        }


        newTextArea = new TextArea();
        newTextArea.setText( initialText );
        newTextArea.addClickHandler( new ClickHandler() {
            public void onClick( ClickEvent clickEvent ) {
                // If the text is still the original text, then clear it.
                if ( newTextArea.getText().equals( initialText ) ) {
                    newTextArea.setText( "" );
                }

            }
        } );
    }

答案 1 :(得分:0)

因为你的final String initialTextif-else块的本地。所以,在if-else块之外声明它,然后在其中初始化。

答案 2 :(得分:0)

initialText仅存在于curlies块内。

答案 3 :(得分:0)

您需要将initialText移动到功能块

开头的正下方

protected TextArea getNewTextArea(){

            String initialText ...