gpt4 book ai didi

java - 贴图缩小数组超出范围异常

转载 作者:行者123 更新时间:2023-12-02 20:27:51 25 4
gpt4 key购买 nike

我很困惑为什么会这样。我已经为此工作了一段时间,但我只是不明白。

我的 map 代码可以正常工作,因为我可以验证其所在目录中的输出。

这是方法:

public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {

String stateKeyword = value.toString();
String[] pieces = new String[] {stateKeyword};

for (String element : pieces) {
String name = element.split(":")[0].trim();
String id = element.split(":")[1].trim();
Integer rank = Integer.parseInt(element.split(":")[2].trim());
context.write(new Text(name), new Text(id + ":" + rank));
}
}

因此,我的 Output将具有id和rank字段的串联。如果我正常打印该值,则可以在输出文件中看到它。

但是,我执行的任何 split操作都会抛出 ArrayOutOfBoundsException,我不明白为什么。我什至会检查该值是否包含“:”,它会打印但不会拆分。但是,当我不进行此检查时,会得到异常(exception)。

这是我的减少:

public void reduce(文本键,可迭代的值,上下文上下文)引发IOException,InterruptedException {
        List<String> elements = new ArrayList<String>();
Text word = new Text();
for (Text val : values) {
if (val.toString().contains(":")) {
String state = val.toString().split(":")[0];
word.set(state);
}
context.write(key, word);
}
}

我在文件中的输出如下所示:
Name   id:rank
Name id:rank
Name id:rank

...
...
...

但是为什么我不能分开 id and rank?

最佳答案

为避免ArrayOutOfBoundsException,请在从数组中获取值之前检查数组大小。像这样的东西会更合适:

    String[] temp = element.split(":"); 
if(element.size()==2){
String name = temp[0].trim();
String id = temp[1].trim();
}

关于java - 贴图缩小数组超出范围异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54860172/

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