需要帮助转换代码以使用字符串而不是整数

时间:2013-11-30 05:02:32

标签: java string

在一篇较老的帖子中,我向这个问题寻求帮助:

给定一个文本文件的StringBuilder,格式为A [1,2,3,4] B [5,6,7,8] C [9,10]

我需要创建一个方法,以便在给定文本文件的名称和分别搜索的标记即“StringBuilder ex.txt”和“A”时,它将返回一个包含元素1,2,3的列表,和4.

此代码有效

static List<Double> getElements(String fileContent, String token) {
  StreamTokenizer tokenizer = new StreamTokenizer(new StringReader(fileContent));
  List<Double> list = new ArrayList<Double>();
  while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {
    if (tokenizer.sval.equals(token)) {
      tokenizer.nextToken();  // '[' 
      do {
        tokenizer.nextToken();  // go to the number
        list.append(tokenizer.nval);
      } while (tokenizer.nextToken() == ',');
      break;
    }
  } 
  return list;
}

现在我正在尝试调整代码来处理类似word1 [yzh,ppk,edf] word2 [ift,yyu,atb]

以下是我的尝试:

public List<String> getPhrases(StringBuilder fileContent, String token) {
      StreamTokenizer tokenizer = new StreamTokenizer(new StringReader(fileContent.toString()));
      List<String> list = new ArrayList<String>();
      while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {
        if (tokenizer.sval.equals(token)) {
          tokenizer.nextToken();  // '[' 
          do {
            tokenizer.nextToken();  // go to the number
            list.append(String.valueOf(tokenizer.nval));
          } while (tokenizer.nextToken() == ',');
          break;
        }
      } 
      return list;
    }

问题是append方法返回类型List的未定义错误。如何纠正这种情况?

2 个答案:

答案 0 :(得分:0)

而不是:

 list.append(String.valueOf(tokenizer.nval));

我想你想要:

 list.append(tokenizer.sval);

答案 1 :(得分:0)

相反,此String.valueOf(tokenizer.nval)使用tokenizer.sval并使用'list.add(sval)'。