簡體   English   中英

在循環外使用String變量

[英]using a String variable outside loop

在StAX解析示例中,我設置了String dataread = se.getElementText(); 我成功地立即打印了該字符串(數據讀取)。

但是,在我的代碼的其他任何地方,它都行不通,它報告找不到符號dataread 您將看到它正被嘗試進入代碼的其他5個位置-所有報告都相同。 if語句中的第一行有效。

如何在程序的其他位置使用字符串“ dataread”?

謝謝

public static void main(String[] args) throws FileNotFoundException, XMLStreamException
{
    // TODO code application logic here
    //System.out.println("Here");
    //String filename = null;
    String filename = "BookCatalog2.xml";
    XMLInputFactory factory = XMLInputFactory.newInstance();
    XMLEventReader reader = factory.createXMLEventReader(new FileReader(filename));
    while(reader.hasNext())
            {
                XMLEvent event = reader.nextEvent();
                XMLEvent nextEvent = reader.peek();
                switch (event.getEventType())
                        {
                    case XMLEvent.START_ELEMENT:

                        StartElement se = event.asStartElement();
                        //System.out.println("Here");
                        //System.out.print("<" + se.getName());

                        //System.out.print(" " + se.getName());
                        //System.out.printf("\n");
                        String elem = se.getName().toString();
                        //String elem = "1";
                        //System.out.printf("elem = %s\n",elem);
                        //String ele = event.getAttributeName();

                        System.out.printf("event = %s\n",se.getName());

                        //if( se.getName().toString() == "{http://www.publishing.org}Date")
                       if( se.getName().toString().equals("Date"))
                       //if( elem == "1")
                        {
                            System.out.println("Here !!!!!!!!!!!!!!!!!");
                            String dataread = reader.getElementText();
                            //System.out.printf("data = %s\n",reader.getElementText());
                            System.out.printf("data = %s\n",dataread);
                        }
                        Iterator attributes = se.getNamespaces();
                        System.out.printf("DATA READ = %s\n",dataread);
                        while(attributes.hasNext())
                        {
                            Attribute attr= (Attribute)attributes.next();
                            System.out.print(" " + attr.getName() + "=\"" +attr.getValue() +"\"");
                            System.out.printf("\n");
                        }//end while loop
                    System.out.print(">");
                        if(nextEvent.isCharacters())
                        {
                            Characters c = reader.nextEvent().asCharacters();
                            if(!c.isWhiteSpace())
                            System.out.print(c.getData());
                            System.out.printf("\n");


                        }// end if
                        System.out.printf("DATA READ = %s\n",dataread);
                    /*case XMLEvent.END_ELEMENT>
                        EndElement ee = event.asEndElement();
                        System.out.print("</"+ee.getName()+">");
                        break;
                        * */
                        System.out.printf("DATA READ = %s\n",dataread);
                        }// end witch
                System.out.printf("DATA READ = %s\n",dataread);
            }// end while
    System.out.printf("DATA READ = %s\n",dataread);
    reader.close();
}//end Main
}// public claSS

您的字符串在第一個IF的范圍內,必須在方法開始時聲明它。

嘗試在String filename = "BookCatalog2.xml";之后聲明String filename = "BookCatalog2.xml";

例如:

String filename = "BookCatalog2.xml";
String dataread = "";

您的String變量dataread是一個局部變量,其作用域僅在if子句中。

因此,您將無法在if塊之外訪問此變量。 要在打印時允許訪問此變量,必須在if語句之前聲明它。 例如:

String dataread = null;
if (test) {
    dataread = ...;
}

System.out.println(dataread); // etc

您要做的是在每個方法都處於相同級別或更低級別的級別聲明局部變量。 由於現在要在if子句中聲明變量,因此只能從if子句中訪問它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM