gpt4 book ai didi

java - 创建对象列表时出现预期错误

转载 作者:行者123 更新时间:2023-11-29 05:37:17 25 4
gpt4 key购买 nike

有人可以帮我解决这个无害的标识符预期错误吗?我正在声明一个 Register 类并尝试制作一个 Register 对象列表。

更新:“Register”在 MySaxParser.java 中的局部范围内,正如 Meesh 所建议的那样。但我仍然看到标识符预期错误。完整代码和报错信息如下:

使用 java 版本“1.4.1_01”发现了这个问题

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;


import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;



public class MySaxParser extends DefaultHandler {
List<Register> registerL;
String xmlFileName;
String tmpValue;
Register registerTmp;

public MySaxParser(String xmlFileName) {
this.xmlFileName = xmlFileName;
registerL = new ArrayList<Register>();
parseDocument();
printDatas();
}
private void parseDocument() {
// parse
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
SAXParser parser = factory.newSAXParser();
parser.parse(xmlFileName, this);
} catch (ParserConfigurationException e) {
System.out.println("ParserConfig error");
} catch (SAXException e) {
System.out.println("SAXException : xml not well formed");
} catch (IOException e) {
System.out.println("IO error");
}
}
private void printDatas() {
// System.out.println(bookL.size());
for (Register tmpReg : registerL) {
System.out.println(tmpReg.toString());
}
}
@Override
public void startElement(String s, String s1, String elementName, Attributes attributes) throws SAXException {
// if current element is book , create new book
// clear tmpValue on start of element

if (elementName.equalsIgnoreCase("reg")) {
registerTmp = new Register();
registerTmp.setregName(attributes.getValue("regname"));
registerTmp.setaddr(attributes.getValue("addr"));
}
}

@Override
public void characters(char[] ac, int i, int j) throws SAXException {
tmpValue = new String(ac, i, j);
}
public static void main(String[] args) {
new MySaxParser("register.xml");
}
}



/*****
* Model class for Regsiter
* ****/
class Register {
String regName;
String addr;

//Setters
public void setregName(String regName ) { this.regName = regName; }
public void setaddr (String addr ) { this.addr = addr; }

//Getters
public String getregName() { return this.regName; }
public String getaddr() { return this.addr;}

}

错误:

MySaxParser.java:19: <identifier> expected
List<Register> registerL;
^
MySaxParser.java:26: '(' or '[' expected
registerL = new ArrayList<Register>();
^
MySaxParser.java:46: ';' expected
for (Register tmpReg : registerL) {
^
MySaxParser.java:49: illegal start of expression
}
^
MySaxParser.java:48: ';' expected
}
^
MySaxParser.java:50: illegal character: \64
@Override
^
MySaxParser.java:62: illegal character: \64
@Override
^
MySaxParser.java:68: <identifier> expected
}
^
MySaxParser.java:26: cannot resolve symbol
symbol : variable registerL
location: class MySaxParser
registerL = new ArrayList<Register>();
^
9 errors

最佳答案

如果 RegisterMySaxParser 都是公共(public)类(意味着它们可以被其他类使用),它们都需要在自己的文件中。如果没有,您可以将 Register 设置为局部范围,并仅在 MySaxParser 中访问它。例如(为简洁起见省略了细节):

public class MySaxParser {
List<Register> registers;
}

class Register {
String value;
}

另请参阅上面@Thilo 的评论。您可能需要根据所使用的 JRE/JDK 更改泛型的使用。

关于java - <identifier> 创建对象列表时出现预期错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19019601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com