我认为我将其分解为最基本的形式。如果没有,那么我道歉并将尝试编辑它。为什么在我的while循环中,如果我已经将变量设置为String,我需要为FirstName强制转换String?难道我做错了什么?我尝试将FirstName变量设置为等于第一个标记,该标记应该是文本文件的第一个单词等。
try
{
BufferedReader infileCust =
new BufferedReader(new FileReader("C:\\custDat.txt"));
}
catch(FileNotFoundException fnfe)
{
System.out.println(fnfe.toString());
}
catch(IOException ioe)
{
System.out.println(ioe.toString());
}
}
public static void createCustomerList(BufferedReader infileCust,
CustomerList custList) throws IOException
{
String FirstName;
String LastName;
int CustId;
//take first line of strings before breaking them up to first last and cust ID
String StringToBreak = infileCust.readLine();
//split up the string with string tokenizer
StringTokenizer st = new StringTokenizer(StringToBreak);
while(st.hasMoreElements()){
FirstName = (String) st.nextElement();
LastName = (String) st.nextElement();
CustId = Integer.parseInt((String) st.nextElement());
}
编辑:显然我可以使用nextToken()代替。但是为什么我的变量显示为未使用?它们不在while循环的范围内吗?
答案 0 :(得分:5)
这是因为nextElement
返回Object。如果你致电nextToken
,则无需投票。
来自文档:
public Object nextElement()
返回与nextToken方法相同的值,除了它声明的返回值是Object而不是String。 它存在,以便此类可以实现Enumeration接口。
编辑关于未使用的变量:您收到警告的原因是变量已分配,但未以某种方式打印,保存或分析。如果您使用名字和姓氏添加呼叫,例如writeln
,警告就会消失。
答案 1 :(得分:3)
因为StringTokenizer.nextElement
返回java.lang.Object
。请参阅此处的文档:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/StringTokenizer.html如果您愿意,可以使用nextToken() : String
。
答案 2 :(得分:2)
因为StringTokenizer.nextElement()返回
与nextToken方法相同的值,除了它 声明的返回值是Object而不是String.It存在,以便此类可以实现Enumeration接口。