Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么即使使用“\\\\”,Split也无法识别管道?_Java_Split_Java.util.scanner - Fatal编程技术网

Java 为什么即使使用“\\\\”,Split也无法识别管道?

Java 为什么即使使用“\\\\”,Split也无法识别管道?,java,split,java.util.scanner,Java,Split,Java.util.scanner,我们正在尝试读取一个文件,然后按管道拆分。代码正在读取文件,但无法识别管道。例如,文件的行显示Cola | 0,在拆分到数组之后,我们得到了数组[1]的越界异常。如果线被正确地分割,那肯定存在 当我们有一个ifline.contains \|时,它每次都返回true,即使管路中有管道。我们尝试在while中使用nextInt而不是nextLine,但它立即返回false并结束了while,这是它不应该做的,因为肯定有数字 我们还尝试在末尾使用indexOf\|+1的子字符串,但仍然不起作用。为什

我们正在尝试读取一个文件,然后按管道拆分。代码正在读取文件,但无法识别管道。例如,文件的行显示Cola | 0,在拆分到数组之后,我们得到了数组[1]的越界异常。如果线被正确地分割,那肯定存在

当我们有一个ifline.contains \|时,它每次都返回true,即使管路中有管道。我们尝试在while中使用nextInt而不是nextLine,但它立即返回false并结束了while,这是它不应该做的,因为肯定有数字

我们还尝试在末尾使用indexOf\|+1的子字符串,但仍然不起作用。为什么它不接管子

try (Scanner fileScanner = new Scanner(file)) {
    while (fileScanner.hasNextLine()) {
        String line = fileScanner.nextLine();
        if (!line.contains("$")) {
            for (String item : productsSold.keySet()) {
                String[] productDetails = line.split("\\|");
                productsSold.put(item, Integer.parseInt(productDetails[1]));

Cola | 0应使数组的第二行为0。相反,我们得到的是数组的越界异常。

我相信,foreach循环的位置有问题。它不断尝试拆分同一行,最终导致数组的索引不在1。

是否尝试打印该行?里面有什么?此外,是否每行都包含一个|?Cola | 0.split\\\|。当使用indexOf和contains时,不需要逃逸管道:indexOf |和contains |是您要使用的。@Ivar,大多数行中都有管道。我认为for each循环相对于行实例化的位置导致了拆分和越界异常问题。@AndyTurner,谢谢!我们成功地使用了contains,它帮助清理了if语句逻辑中的漏洞!这是一个简单的编程错误,对其他任何人都没有用处,因为他们甚至不可能找到这个问题/答案。所以请删除这个问题。