如何从java行列表中的arraylist中获取下一个以信息开头的字符串?
正在做一个电影项目,但遇到了一些麻烦 如果文件中有多行类似以下内容: 标题:阿凡达 导演:詹姆斯·卡梅隆 我如何使该方法起作用 代码现在没有运行 我创建了一个helper方法来查找startswith what string first,因此如果用户输入Title:或Director:,该方法将返回tile或Director的名称。但是java说我不在这里工作,这很奇怪,它说我不能解析为变量。我还意识到,如果我这样做,它将无法工作,因为用户正在输入一个字符串,但该行将包含title:name的两个信息。我该如何着手使它工作如何从java行列表中的arraylist中获取下一个以信息开头的字符串?,java,for-loop,parsing,arraylist,split,Java,For Loop,Parsing,Arraylist,Split,正在做一个电影项目,但遇到了一些麻烦 如果文件中有多行类似以下内容: 标题:阿凡达 导演:詹姆斯·卡梅隆 我如何使该方法起作用 代码现在没有运行 我创建了一个helper方法来查找startswith what string first,因此如果用户输入Title:或Director:,该方法将返回tile或Director的名称。但是java说我不在这里工作,这很奇怪,它说我不能解析为变量。我还意识到,如果我这样做,它将无法工作,因为用户正在输入一个字符串,但该行将包含title:name的两
/**
* Lines in the file.
*/
private List<String> lines;
//helper method
String getNextStringStartsWith(String str) {
String[] lineArray;
//iterate over list of lines
for(i = 0; i < this.lines.size(); i++) {
//if the specific line has that string
if(this.lines.get(i).equals(str)) {
lineArray = this.lines.get(i).split(":");
info = lineArray[1].trim());
//gets the line afterwards
return info;
}
}
}
//Have to iterate over each line and look for lines starting with "Title:" and "Director:"
// Set the value of this.title and this.director
private void setTitleAndDirector() {
this.title = getNextStringStartsWith("Title:");
this.director = getNextStringStartsWith("Director:");
}
/**
*文件中的行。
*/
私有列表行;
//辅助方法
字符串getNextStringStartsWith(字符串str){
字符串[]线性排列;
//迭代行列表
对于(i=0;i
for循环的问题在于没有告诉Java变量i是哪种类型。因此Java无法为它创建变量
你的代码还有其他一些小问题
- 当循环没有返回任何内容时,您缺少返回值
- 您没有告诉Java变量info是哪种类型的
- 您在lineArray[1]的行中有a)太多。trim()
//helper method
String getNextStringStartsWith(String str) {
String[] lineArray;
//iterate over list of lines
for(int i = 0; i < this.lines.size(); i++) {
//if the specific line has that string
if(this.lines.get(i).equals(str)) {
lineArray = this.lines.get(i).split(":");
String info = lineArray[1].trim();
//gets the line afterwards
return info;
}
}
return null;
}
//helper方法
字符串getNextStringStartsWith(字符串str){
字符串[]线性排列;
//迭代行列表
对于(int i=0;i
非常感谢您。还有一个问题,我是否可以更改为包含,因为该行将有标题:Avatar,但用户只会输入标题:并且程序应该搜索前者。@XYZMath我不确定我是否完全理解您的问题。但是如果你问是否可以将equals改为contains,那么答案是可以。如果(this.lines.get(i).contains(str)){像现在这样,如果文件有一行标题:Avatar,使用上面的方法,它将不会工作,因为标题:Avatar不等于标题:,只有当我将其更改为contains时,它才能匹配条件并为我检索名称?是的,听起来正确。等于()将检查两个字符串是否100%相同,而contains()将仅检查是否可以在(更大的)字符串中找到字符串。例如,字符串“XYZMath”包含“XYZ”。